gpt4 book ai didi

c# - 从一个额外的线程返回结果

转载 作者:太空宇宙 更新时间:2023-11-03 19:24:00 24 4
gpt4 key购买 nike

我想让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:方法 - 基于 Brian 的回答

        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;

还是没有等到想要的结果

最佳答案

在桌面 (WinForms/WPF) 应用程序中,最好和最简单的方法是 BackgroundWorker。它旨在处理此问题。

关于c# - 从一个额外的线程返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10138986/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com