基本上,我有2个函数
Public Async Function finRepeatOrderingAsync() As Task
basWindowFuncs.SetAllowUnsafeHeaderParsing20()
Await mainLoopRepeat()
Await secondaryLoop()
Do
Await mainLoopRepeat()
Loop
End Function
基本上,我希望Mainlooprepeat和辅助循环再次重复,一次和一次。
这种安排的问题是次级卢普永不结束,等待的等待确保了Mainloop的DO循环。
我想要的是
做一次Mainlooprepeat。
做次级无限的时间。
当Secondaryloop连续运行Loop Mainlooprepeat时。
我应该怎么做?
辅助环看起来像这样
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
但是感觉不优雅。
无论如何,我希望次级卢普和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