我正在通过委托进行异步方法调用。指向函数的委托是一个void函数。我怎么知道async函数已成功执行,如果没有再次调用该函数,直到我得到成功响应。这是我的代码 -
BillService bs = new BillService();
PayAdminCommisionDelegate payCom = new PayAdminCommisionDelegate(bs.PaySiteAdminByOrderNo);
payCom.BeginInvoke(OrderNo,null,null);
答案 0 :(得分:2)
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");
}
}
}