我的印象是我可以进行这个线程调用,而我的方法“DoSomething”中的任何内容都会开始发生,但显然不会。
当我调用这一行时:
Task.Factory.StartNew(() =>
ControllerClass.DoSomething("data"),
CancellationToken.None,
TaskCreationOptions.LongRunning, TaskScheduler.Default);
ControllerClass.DoSomething("data") 未执行。
但是,如果我添加一个等待,那么该方法就会被调用。
我使用 LongRunning 选项的原因是该方法可以是 LongRunning 在某些事情开始执行时没有到位。是的,该方法本身在内联调用时有效。只是它需要在一个线程中,以便主程序可以在该线程执行其操作时继续。
顺便说一句,我也尝试过这种方式来调用它并且结果相同:
Task.Factory.StartNew(() =>
ControllerClass.DoSomething("data")).ContinueWith
(t =>
{
SendErrorEmail(t.Exception);
}, TaskContinuationOptions.OnlyOnFaulted
);
我是否缺少一些选项来告诉它立即开始执行方法调用?