私は同様の質問があることを知っています:メインスレッドのタスクを続行する
しかし、その質問はwpfに向けられており、コンソールアプリケーションで動作させることはできません。
別のスレッドでメソッドを実行したいのですが、そのメソッドが完了したら、メインスレッドで実行を続けたいと思います。メソッドに参加したくない。とにかくここに私が持っているものがあります:
class Program
{
static void Main(string[] args)
{
Thread.CurrentThread.Name = "MAIN";
DoWork(x =>
{
Console.Write("Method successfully executed. Executing callback method in thread:" +
"\n" + Thread.CurrentThread.Name);
});
Console.Read();
}
static void DoWork(Action<bool> onCompleteCallback)
{
Console.Write(Thread.CurrentThread.Name); // show on what thred we are executing
Task doWork = new Task(() =>
{
Console.Write(Thread.CurrentThread.Name); // show on what thred we are executing
Thread.Sleep(4000);
});
Action<Task> onComplete = (task) =>
{
onCompleteCallback(true);
};
doWork.Start();
// this line gives an error!
doWork.ContinueWith(onComplete, TaskScheduler.FromCurrentSynchronizationContext());
}
}
メインスレッドでonCompleteCallbackメソッドを実行するにはどうすればよいですか?