【发布时间】:2015-09-24 17:05:00
【问题描述】:
大家好,我开发了一个 API,用于处理重定向到多个数据库的请求。
它一直运行良好,但最近遇到了障碍。我已经在谷歌上搜索了两天并尝试了几种不同的解决方案,但它们似乎都不起作用。
我的应用程序基于 FIFO 处理请求。
[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;
}
这是我尝试过的最新解决方案...我需要根据传递给此方法调用的内容将字符串返回给客户端。我很困惑,因为我认为这项技术默认异步处理这些请求。
这是另一个尝试:
[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;
}
谢谢!
【问题讨论】:
-
你为什么要启动一个线程然后立即等待它完成?
-
最终我想启动线程,然后继续处理其他请求...如何在不等待客户端完成的情况下将值返回给客户端?
-
你想要异步,而不是线程。只有当你有一个异步 API 可以调用时,这才有可能。阅读blog.slaks.net/2014-12-23/parallelism-async-threading-explained
-
我尝试过使用异步任务,但仍然没有成功。我一直在寻找示例代码,但此时一切看起来都已经过时了。
-
公共异步任务
Index() { return View(await db.Employees.ToListAsync());我尝试了与此类似的方法,但无法实现我想要的。
标签: c# .net api azure asp.net-core-mvc