0
私はデリゲートを介して非同期メソッド呼び出しを行っています。関数を指すデリゲートはvoid関数です。非同期関数が正常に実行されたことをどのようにして知ることができますか?ここに私のコード -成功応答を得るまで非同期メソッドを呼び出す方法は?
私はデリゲートを介して非同期メソッド呼び出しを行っています。関数を指すデリゲートはvoid関数です。非同期関数が正常に実行されたことをどのようにして知ることができますか?ここに私のコード -成功応答を得るまで非同期メソッドを呼び出す方法は?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace FewAsyncCalls
{
class Program
{
static void Main(string[] args)
{
var d = new Action(LongErrorProneMethod);
AsyncCallback callback = null;
callback = new AsyncCallback(r =>
{
try
{
d.EndInvoke(r);
}
catch
{
Console.WriteLine("Async call failed");
d.BeginInvoke(callback, null);
}
});
d.BeginInvoke(callback, null);
Console.ReadLine();
}
private static void LongErrorProneMethod()
{
Console.WriteLine("Running long error prone method.");
Thread.Sleep(1000);
if (new Random().Next(100) > 10)
throw new InvalidOperationException();
else
Console.WriteLine("Async call successful");
}
}
}