我想异步调用方法的数量,但每个方法应在完成前一个方法后执行。
直到现在,我在一个Master方法下包装了所有方法,并使用委托异步调用它(主方法)。 现在要求已经改变,并且可以根据不同状态调用或不调用在侧方法中顺序调用的方法。 我可以通过检查不同的排列和组合来实现当前架构。但我想异步但顺序执行每个方法
这是我当前的异步运行实现(注意:这是描述我的功能的示例代码)
功能1
private void SaveCustomer(List<Customer> customers)
{
// Doing some calculation and saving customer in database
}
功能2
private decimal CalulateRate(RateInfo applicableRate)
{
// Calculate rate and some other factors and save in database
}
功能3
GenerateInvoice(decimal calculatedRate,DateTime effectiveDate,
Int32 NumberOfDays)
{
// generating invoice and saving in database
}
功能4
GenerateCustomerDocuments(List<DocumentInfo> documentsToGenerate,
List<Customer> customers)
{
// generating diffrent documents for customers
}
我从一个主方法异步调用上述所有函数
Private void ExecuteCustomerRegistration(CustomerRegInfo custRegInfo)
{
//CustomerRegInfo is a class which contains all input parameter
object for below methotds
SaveCustomer(custRegInfo.Customers);
decimal rate = CalulateRate(custRegInfo.ApplicableRate);
GenerateInvoice(rate,custRegInfo.EffectiveDate,custRegInfo.NumberOfDays);
GenerateCustomerDocuments(custRegInfo.DocumentsToGenerate,
documentsToGenerate.Customers)
}
使用委托异步调用ExecuteCustomerRegistration方法
protected delegate void delg_DoProcess(CustomerRegInfo custRegInfo);
protected void btnRegisterCustomer_Click(object sender, EventArgs e)
{
delg_DoProcess doProc = new delg_DoProcess(ExecuteCustomerRegistration);
CustomerRegInfo custRegInfo = GetCustomersRegInfo();
doProc.BeginInvoke(custRegInfo, null, null);
}
我想为每个下面的方法异步做同样的工作 这样的执行顾客注册方法
请建议我怎么做。目前我正在使用.net 4.0
答案 0 :(得分:0)
您可以链接多个任务。
var firstTask = new Task(() => SaveCustomer(custRegInfo.Customers);
var SecondTask = firsttask.ContinueWith((t)=> CalulateRate(custRegInfo.ApplicableRate)).
firstTask.Start();
请注意,这只是一个例子,并不是说你应该如何做到这一点。但它让您了解如何使用任务和继续。哪个应该符合你的目的。