我有两个线程调用“Task.Factory.StartNew”。假设一个线程(ThreadA)比另一个线程(ThreadB)稍微领先。
...在稍微领先的线程A中被调用
Task.Run(() => {
SomeMethodInThreadA();
});
...在稍后调用的B线程中
Task.Run(() => {
SomeMethodInThreadB();
});
TaskScheduler是否保证在执行SomeMethodInThreadB之前先执行SomeMethodInThreadA?
如果不是,我该怎么做?使用Task.Factory.StartNew并传递特殊的TaskScheduler吗?
此外,除了确保先处理SomeMethodInThreadA之外,我还想确保SomeMethodInThreadA在执行SomeMethodInThreadB之前先完成。
我已经研究过使用StaTaskScheduler,但我不确定这是否是解决方案。
编辑:
没有透露关于我继承的程序的太多细节/戏剧性,我想要的是一个自定义的TaskScheduler,它:
尊重委托排队的顺序
串行执行它们
在同一线程中执行,类似于我上面链接的StaTaskScheduler源代码
{ SomeMethodInThreadA(); SomeMethodInThreadB(); }
怎么样? - usr