[英]Call a method that will run in the background while the original thread finishes
当我的 API 中的端点被命中时,我有一个服务被调用。 在Service中,我将object添加到一个列表中,然后调用一个应该休眠一定时间的新方法,然后更新刚刚添加到原始列表中的object。 问题是我需要启动线程的 POST 来完成并返回状态代码,而时间延迟仍在继续。 目前,我的 POST 仍在等待延迟方法完成。
如果可以这样做,有什么想法吗?
创建服务
List<Object> objList = new List<Object>();
public async Task<dynamic> Create(Object obj)
{
var newObj = new Object()
{
Id = obj.Id,
Name = obj.name,
Status = obj.Status
};
objList.Add(newObj);
ChangeState(newObj.Id);
return newObj;
}
改变状态方法
public async void ChangeState(string objId)
{
Thread.Sleep(5000);
var objState = objList.FirstOrDefault(n => n.Id == objId);
objState.State = "APPROVED";
}
希望您的服务寿命足够长,以使其有意义:
List<Object> objList = new List<Object>();
public dynamic Create(Thing obj)
{
var newObj = new //i assume you meant to create an anonymous type here
{
Id = obj.Id,
Name = obj.name, //public things should be PascalCase
Status = obj.Status
};
objList.Add(newObj);
_ = ChangeStateAsync(newObj.Id); //set it going and discard the result; it'll complete 4.9999999999 seconds after this method finishes
return newObj;
}
和
public async Task ChangeStateAsync(string objId)
{
await Task.Delay(5000);
var objState = objList.FirstOrDefault(n => n.Id == objId);
objState.State = "APPROVED";
}
ps;
class Thing
{
public string Id;
public string name; //public things should be PascalCase
public string Status;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.