【发布时间】:2017-08-07 21:07:34
【问题描述】:
以下是场景:在我的 WPF 应用程序中,我希望始终保持循环运行以执行各种操作。我想到了这种模式:
void MainWindow_OnLoaded(object sender, RoutedEventArgs e)
{
SomeProcessAsync(); //throw away task
}
async Task SomeProcessAsync()
{
while (true)
{
DoSomething();
await Task.Delay(1000);
}
}
由于返回值未使用,调用会触发警告。消除该警告的最干净的方法是什么?
#pragma warning disable 4014
AddItemsAsync(); //throw away task
#pragma warning restore 4014
这可行,但它看起来很讨厌!
顺便说一句,我也可以使用计时器,但我喜欢这个循环的简单性。
【问题讨论】:
-
使用
void作为返回类型怎么样? -
为什么一开始有两种方法?只需将循环放在
MainWindow_OnLoaded中即可。 -
你为什么不用计时器来代替这个循环呢?
Task.Delay本身在下面使用了一个计时器。这不是一劳永逸的任务,只要表单或应用程序处于活动状态,它就应该处于活动状态 -
如果我不需要它的特殊行为,我想避免 async void。此外,方法 SomeProcessAsync 不需要知道调用它的代码。它应该公开任务,并且是调用者的工作来丢弃它。
-
@Servy 好点,但假设负载处理程序已经很大,问题再次变得相关。
标签: c# async-await compiler-warnings