如何在单独的线程中运行函数

时间:2018-01-25 12:44:18

标签: vb.net asynchronous async-await

我正在开发一个涉及在自动化服务器上​​读取内容并将其存储在数据库中的项目。

目前整个事情已实现同步工作,我想制作这个异步

我有一个很大的方法可以调用一大堆我无法控制的API,而且不是Async

我的目标是将所有这些包装在异步调用中

所以我做了一个新方法:

Public Async Function ReadAsync() As Task
    While reading
        ReadNext()
    End While
End Function

问题是:我收到一条警告,说我的功能应该包含一个" Await"。但我真的没有什么要等待的。我想在readnext完成后立即阅读下一个iteam。

我是否需要等待电话?有没有办法等待什么?这是包装我的方法并使其成为Asyncrhonous的正确方法吗?

1 个答案:

答案 0 :(得分:0)

功能级异步本身并没有任何魔力。如果要在backgroud线程中执行方法,可以在ThreadPool中执行它。这可以通过以下方式完成:

ThreadPool.QueueUserWorkItem(AddressOf Read)

在这种情况下,您的功能签名应该遵循:

Public Sub Read(stateInfo as Object)
    While reading
        ReadNext()
    End While
End Function