线程MVC 6 .net 5

时间:2015-09-24 17:05:01

标签: c# .net api azure asp.net-core-mvc

嘿伙计们我已经开发了一个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;
    }

谢谢你!

2 个答案:

答案 0 :(得分:2)

在第二次尝试中,您创建一个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;
}

答案 1 :(得分:-1)

我能够解决这个问题,感谢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;
    }