我想在一个额外的线程中result
执行后使(重进程的返回结果)可以访问Heavy Process
,因为它主要是预期不希望在进程 UI 生效后,进程完成后可以玩result
在一些搜索过程中,查看我的文章,我发现有几种方法可以实现这一点,请提供您知道或在类似情况下使用的最佳方法
这是我想以最佳方法处理的示例:
public ACollection DoProcess(Document docProcess)
{
ACollection result = new ACollection ();
ThreadStart threadStart = delegate
{
result = MyProcess(docProcess);
};
var threadProcess = new Thread(threadStart);
threadProcess.Start();
return result ;
}
其他可能的方法可能是 IAsyncResult、BackgroundWorker、使用计时器和检查状态,而不是将结果返回给处理它的方法并将其报告给 UI,以线程安全的方式直接将其发送到我们的 UI 控件...
请在类似情况下给出您自己的意见和样品,在此先感谢
编辑 3:方法 - 基于布赖恩的回答
LenzCollection myResultCollection = new LenzCollection();
TaskScheduler ui = TaskScheduler.FromCurrentSynchronizationContext();
Task.Factory.StartNew(() =>
{
myResultCollection = DoCollect(docProcess);
//Task.WaitAll();
return myResultCollection;
}).ContinueWith((task =>
{
myResultCollection = task.Result;
}), ui);
return myResultCollection;
它仍然没有等待,也不会给出想要的结果