【发布时间】:2011-07-06 22:04:10
【问题描述】:
传入和传出后台工作人员的数据会发生什么情况?
使用 RunWorkerAsync 将数据从主线程传递到后台工作线程:
backgroundWorker.RunWorkerAsync(myData);
这是在后台线程的 DoWork 事件处理程序中接收到的:
myData = (Data)e.Argument;
DoWork处理完数据后,使用e.Result返回:
e.Result = myData;
这是在主线程的 RunWorkerCompleted 事件处理程序中接收到的:
myData = (Data)e.Result;
BackgroundWorker 负责在线程之间传递数据。我期望将大量数据传入和传出后台工作者,所以我想知道这种传输的开销是多少,以及是否有更好的方法来处理后台工作者中的大量内存对象。我还想知道是否可以从主线程以线程安全的方式访问后台工作人员中的数据。
作为参考,我使用的是 C#、.Net 3.5 和 Windows 窗体。
【问题讨论】:
标签: c# .net winforms backgroundworker