我有如下所述的WebApi控制器。此控制器具有Update方法,该方法将在内部调用名为 CustomerDataService 的服务以更新客户记录。假设我们有n个客户记录要更新。
CustomerDataService中的UpdateMethod将执行更新并返回更新响应。
我需要在更新响应之后异步执行一些繁重的处理,例如操作数据/管理数据缓存。由于此处理耗时与此API的使用者无关,因为Update成功发生所以我必须异步执行此操作。 我可以使用给定方案的C#执行此操作吗?请建议。
注意: 我不想创建任何批处理作业来实现这一点,因为我想执行特定于用户会话的操作。
控制器
public class CustomerController : ApiController
{
[HttpGet]
public string UpdateCustomer()
{
ICustomerService obj = new CustomerDataService();
return obj.UpdateCustomer(GetCustomerList());
}
private List<CustomerModel> GetCustomerList()
{
return new List<CustomerModel>()
{
new CustomerModel
{
CustomerId="1",
Name="John",
Category="P1"
},
new CustomerModel
{
CustomerId="2",
Name="Mike",
Category="P2"
}
//....n Records
};
}
}
模型
[Serializable]
[DataContract]
public class CustomerModel
{
[DataMember]
public string CustomerId { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public string Category { get; set; }
}
接口和CustomerDataService
public interface ICustomerService
{
string UpdateCustomer(List<CustomerModel> customerList);
}
public class CustomerDataService : ICustomerService
{
public string UpdateCustomer(List<CustomerModel> customerList)
{
//Do Data Processing - DB Call
//Return Confirmation Message
return "Data Updated Successfully!!!";
//Needs to perform some processing asynchronously i.e. Call ProcessResults()
}
private void ProcessResults()
{
//DO Processing
}
}
答案 0 :(得分:0)
您正在寻找的是在c#中使用async / await,请参阅微软网站上的这篇文章:Asynchronous Programming with Async and Await。这是另一篇包含大量示例的文章:C# Async, Await。
一旦了解了它的工作原理,就可以很容易地更改代码以利用这种模式。如果您有特定问题或遇到问题,请告诉我们。