Есть такое вот простое приложение.
Хочу понять именно с асинхронностью поиграть
не пойму как продолжить выполнение в методе Run, только после окончания WriteCallbackCompleted.
что я не так делаю?
using System;
using System.Threading.Tasks;
namespace MonitorEnterTest
{
class Program
{
static void Main(string[] args)
{
TPL tpl = new TPL();
tpl.Run();
Console.WriteLine("Main completed");
Console.ReadKey();
}
}
class TPL
{
public void Run()
{
AsyncCallback asyncCallback = new AsyncCallback(WriteCallbackCompleted);
IAsyncResult ar = WriteCallbackStarted(asyncCallback);
//Надо дождаться окончания выполнения
}
IAsyncResult WriteCallbackStarted(AsyncCallback ac)
{
var task = Task.Factory.StartNew(() => { });
if (ac != null)
{
task.ContinueWith((r) =>
{
ac(task);
}, TaskContinuationOptions.ExecuteSynchronously);
}
Console.WriteLine("WriteCallbackStarted completed");
return task;
}
void WriteCallbackCompleted(IAsyncResult ar)
{
Console.WriteLine("WriteCallbackCompleted");
}
}
}