我正在运行一个同步方法。在这个方法里,我需要运行两个大的方法,所以我想要将它们异步地运行。我考虑了一些东西:
public void MyFunc()
{
var doWorkTask_1 = DoWork1();
var doWorkTask_2 = DoWork2();
var result1 = await doWorkTask_1;
var result2 = await doWorkTask_2;
if(result1 == result2)
....
Thread.Sleep(syncInterval);
}
为了做到这一点,我需要以下内容:
DoWork1
和DoWork2
是异步的;MyFunc
也是异步的;
所以我尝试用另一种方式:
public void MyFunc()
{
var doWorkTask_1 = Task.Run(() => DoWork1());
var doWorkTask_2 = Task.Run(() => DoWork2());
var result1 = doWorkTask_1.Result;
var result2 = doWorkTask_2.Result;
if(result1 == result2)
....
Thread.Sleep(syncInterval);
}
那么,第一个问题:
我是否以两种不同的方式写了同样的事情?
第二个问题。我需要每隔X时间运行MyFunc
方法,所以我这样调用它:
Task.Factory.StartNew(MyFunc);
我可以简单地称它为
MyFunc();
我的问题是,因为在myFunc
内部有一个Thread.Sleep
,我是否可以让主线程休眠,还是最好让主线程内的线程休眠?
希望我表达清楚了。 谢谢。
MyFunc
改成异步的吗?还是必须要同步执行? - NeddySpaghetti