int** ary = new int[sizeY][sizeX]
должен быть:
int **ary = new int*[sizeY];
for(int i = 0; i < sizeY; ++i) {
ary[i] = new int[sizeX];
}
, а затем очистить будет:
for(int i = 0; i < sizeY; ++i) {
delete [] ary[i];
}
delete [] ary;
EDIT: как отметил Дитрих Эпп в комментариях, это не совсем легкое решение. Альтернативным подходом было бы использование одного большого блока памяти:
int *ary = new int[sizeX*sizeY];
// ary[i][j] is then rewritten as
ary[i*sizeY+j]
Поскольку у меня нет тестового сценария для движения от, я не могу гарантировать это решение, но мне кажется, что сценарий, подобный тому раньше, обновлял индикаторы выполнения в различных потоках (используйте делегата), подошло бы здесь.
public delegate void DataBindDelegate();
public DataBindDelegate BindData = new DataBindDelegate(DoDataBind);
public void DoDataBind()
{
DataBind();
}
, Если привязка данных должна быть сделана особым потоком, то позволенный, что поток делает работу!
Необходимо смочь сделать что-то как:
if (control.InvokeRequired)
{
control.Invoke(delegateWithMyCode);
}
else
{
delegateWithMyCode();
}
InvokeRequired является свойством на Средствах управления, чтобы видеть, находитесь ли Вы на корректном потоке, затем Вызовите, вызовет делегата на корректный поток.
ОБНОВЛЕНИЕ: На самом деле в моем последнем задании мы сделали что-то вроде этого:
private void SomeEventHandler(Object someParam)
{
if (this.InvokeRequired)
{
this.Invoke(new SomeEventHandlerDelegate(SomeEventHandler), someParam);
}
// Regular handling code
}
, который еще устраняет необходимость блок и отчасти ужесточает код.
В WPF и Silverlight обязательная инфраструктура заботится о переключении на поток UI.
Если вызов потока "недопустим" (т.е. средства управления влиянием вызова DataBind, которые не были созданы в потоке, которым это называют от), затем, необходимо создать делегата так, чтобы, даже если решение / подготовка к DataBind не сделано в создающем управление потоке, любая результирующая модификация их (т.е. DataBind ()) была.
Вы назвали бы мой код от рабочего потока как так:
this.BindData.Invoke();
Это затем заставило бы исходный поток делать привязку, которая (предположение это - поток, который создал средства управления), должен работать.