このスレッド呼び出しを行うだけで、メソッド「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
);
メソッド呼び出しの実行をすぐに開始するように指示するオプションがありませんか?