我有一个方法叫它Do()
做一些计算,然后将结果保存在 2 个不同的文件中,然后做一些其他的计算。由于文件可能很大,我想通过使用任务或类似的东西来更新文件,以防止 UI 冻结。我尝试使用TaskFactory
andWait
但WaitAll
他们冻结了 UI。另一种选择是ContinueWith
,但后面有很多代码我无法将它们向上移动,而且我认为将它们全部移动不是ContinueWith
正确的做法。使用起来很容易,async/await
但我必须使用 .NetFramework4 所以我不能使用它们。我考虑的其他选择是调用一个方法并创建一个backgroundworker
,在其中更新文件并在Runworkercompleted event
调用一个方法来做剩余。但它更丑陋。有没有更好的方法可以在方法中间的单独线程/任务中做某事而不影响其他代码和 UI 线程?这就像在单独的线程/任务中执行所有方法一样,并且在不冻结 UI 的情况下完全完成之前不要离开它。
注意:我必须使用 .NetFrameWork4。
方法Do
是:
public void Do()
{
//---------------
//other codes
//---------------
SaveResult1();
SaveResult2();
//---------------
//other codes that I can not move them up
//---------------
}