繁体   English   中英

在同步操作上使用async / await(主要停留在UI线程上)

[英]Use async/await on synchronous operations (mainly to stay on UI thread)

我正在尝试异步运行一些东西。 这是我的代码:

    private async void SearchButton_Click(object sender, EventArgs e)
    {
         await Search();
    }

    // Inside search there is no async operation
    public Task Search()
    {
        // search for data in DB
        // update DataGridView and other elements on UI

        // How to return null/void/nothing?
        return ???;
    }

等待Search()类的同步方法是否非法/不好? 我知道我可以改用Task.Run(Search)但是Search()将在另一个线程(而不是UI线程)上执行,并且我必须经常在Search()内使用Invoke()

我将Search()方法的返回值从“无效”更改为“任务”,因此可以等待,但是我必须返回什么?

等待Search()之类的同步方法是否非法/不好?

嗯,这是一个非常糟糕的主意,因为您的UI基本上会挂起。

您应该将Search方法更改为SearchAsync (为了方便起见),并使用异步数据库操作使其正确异步。

当前,您没有任何真正的异步性:一切都将在您的UI线程上发生。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM