线程 MVC 6 .net 5
Threading MVC 6 .net 5
大家好,我开发了一个 API 来处理重定向到多个数据库的请求。
它一直运行良好,但最近遇到了障碍。我已经用谷歌搜索了两天并尝试了几种不同的解决方案,但它们似乎都不起作用。
我的应用程序正在以先进先出的方式处理请求。
[HttpGet("getList")]
public string Get(string token, string page, string amount) {
string value = null;
var thread = new Thread(
() => {
value = CustomerDA.getList(token, page, amount);
});
thread.Start();
thread.Join();
return value;
}
这是我尝试过的最新解决方案...我需要 return 根据他们传递给此方法调用的内容将字符串返回给客户端。我很困惑,因为我认为这种技术默认情况下是异步处理这些请求的。
这是另一个尝试:
[HttpGet("getList")]
public async Task<string> Get(string token, string page, string amount) {
var t = Task<int>.Run(() => {
return CustomerDA.getList(token, page, amount);
});
return t.Result;
}
谢谢!
在第二次尝试中,您创建了一个 Task
(= 线程),然后立即同步等待它完成。如果要异步等待,就得用await
.
[HttpGet("getList")]
public async Task<string> Get(string token, string page, string amount) {
var t = Task<int>.Run(() => {
return CustomerDA.getList(token, page, amount);
});
return await t;
}
感谢 SLaks 和他为我指明了正确的方向,我得以解决问题:
[HttpGet("getList")]
public async Task<string> Get(string token, string page, string amount) {
var t = await Task.Run(() => {
return CustomerDA.getList(token, page, amount);
});
return t;
}
大家好,我开发了一个 API 来处理重定向到多个数据库的请求。
它一直运行良好,但最近遇到了障碍。我已经用谷歌搜索了两天并尝试了几种不同的解决方案,但它们似乎都不起作用。
我的应用程序正在以先进先出的方式处理请求。
[HttpGet("getList")]
public string Get(string token, string page, string amount) {
string value = null;
var thread = new Thread(
() => {
value = CustomerDA.getList(token, page, amount);
});
thread.Start();
thread.Join();
return value;
}
这是我尝试过的最新解决方案...我需要 return 根据他们传递给此方法调用的内容将字符串返回给客户端。我很困惑,因为我认为这种技术默认情况下是异步处理这些请求的。
这是另一个尝试:
[HttpGet("getList")]
public async Task<string> Get(string token, string page, string amount) {
var t = Task<int>.Run(() => {
return CustomerDA.getList(token, page, amount);
});
return t.Result;
}
谢谢!
在第二次尝试中,您创建了一个 Task
(= 线程),然后立即同步等待它完成。如果要异步等待,就得用await
.
[HttpGet("getList")]
public async Task<string> Get(string token, string page, string amount) {
var t = Task<int>.Run(() => {
return CustomerDA.getList(token, page, amount);
});
return await t;
}
感谢 SLaks 和他为我指明了正确的方向,我得以解决问题:
[HttpGet("getList")]
public async Task<string> Get(string token, string page, string amount) {
var t = await Task.Run(() => {
return CustomerDA.getList(token, page, amount);
});
return t;
}