1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
void AsyncImport_Callback(IAsyncResult result)
{
MethodInvoker caller = (MethodInvoker)result.AsyncState;
caller.EndInvoke(result);
}
void AsyncDoSomething()
{
//Ici tu peux acceder a MyGrid threadsafe
for (int i = 0; i < 1000000; i++)
{
Debug.WriteLine(i.ToString());
}
}
private object _mydatagridLock = new object();
private DataGrid _mydatagrid;
private DataGrid MyGrid
{
get { return _mydatagrid;}
set { _mydatagrid = value; }
}
private void button1_Click(object sender, EventArgs e)
{
lock(_mydatagridLock)
{
_mydatagrid = magrid;
MethodInvoker invoker = new MethodInvoker(AsyncDoSomething);
invoker.BeginInvoke(new AsyncCallback(AsyncImport_Callback), invoker);
}
} |
Partager