Asynchronous 如何使用wait和Async创建两个无限循环

Asynchronous 如何使用wait和Async创建两个无限循环,asynchronous,async-await,Asynchronous,Async Await,基本上,我有两个函数 Public Async Function finRepeatOrderingAsync() As Task basWindowFuncs.SetAllowUnsafeHeaderParsing20() Await mainLoopRepeat() Await secondaryLoop() Do Await mainLoopRepeat() Loop End Function 基本上,我希望mainloopRepe

基本上,我有两个函数

Public Async Function finRepeatOrderingAsync() As Task
    basWindowFuncs.SetAllowUnsafeHeaderParsing20()
    Await mainLoopRepeat()
    Await secondaryLoop()
    Do
        Await mainLoopRepeat()
    Loop
End Function
基本上,我希望mainloopRepeat和secondary循环一次又一次地重复

这种安排的问题是,secondaryLoop永远不会结束,而Wait确保永远不会到达mainLoop的do循环

我想要的是

不要重复一次

做第二次循环无限次

当secondaryLoop运行时,loop Main loop会不断重复

我该怎么做

二次循环如下所示

Private Async Function secondaryLoop() As Task
    Do
        CoinClass.assertCoinsNameOkay()
        Await CoinClass.checkMarketForAllCoinsAsync()
        CoinClass.assertCoinsNameOkay()
    Loop

End Function
我知道我可以这样做

Public Async Function finRepeatOrderingAsync() As Task
    basWindowFuncs.SetAllowUnsafeHeaderParsing20()
    Await mainLoopRepeat()
    Dim secondaryLoop1 = secondaryLoop()
    Do
        Await mainLoopRepeat()
    Loop
    Await secondaryLoop1 'It'll never be reached but I think I got what I want.
End Function
然而,它感觉不到优雅

在任何情况下,只要程序运行,我都希望secondaryLoop和mainloop重复


我想知道是否有一种优雅的方法可以做到这一点。

如果您只想运行两个无限循环,我认为最简单的方法是创建两个异步方法:

Private Async Function secondaryLoop() As Task
    Do
        CoinClass.assertCoinsNameOkay()
        Await CoinClass.checkMarketForAllCoinsAsync()
        CoinClass.assertCoinsNameOkay()
    Loop
End Function
Private Async Function mainLoop() As Task
    Do
        mainLoopRepeat()
    Loop
End Function
然后,您可以按如下方式运行它们:

Public Async Function finRepeatOrderingAsync() As Task
    basWindowFuncs.SetAllowUnsafeHeaderParsing20()
    Await mainLoopRepeat()
    Await Task.WhenAll(mainLoop(), secondaryLoop())
End Function

哦,那很优雅