我理解的異步不應使用void
的返回類型,除非它是一個事件處理程序。但我有上面的代碼片段,當我打開警告作爲我的項目設置中的錯誤時,我編譯代碼時出現上述錯誤。
RECS0165異步方法「」不應該返回void
如果我刪除async
然後我再編譯錯誤
的「伺機」運算符只能異步拉姆達內使用 表達。考慮用'async'修飾符標記此lambda表達式。
建議的修復方法是將async
添加到匿名函數。這是一個死鎖。
我在這裏做錯了什麼?
重現該問題的步驟:
- 創建VS2017空白UWP項目,它會創建應用程序,XAML和MainPage.xaml中。
添加以下代碼在MainPage.xaml.cs中
命名空間APP4 { 使用系統; using System.Threading.Tasks; 使用Windows.ApplicationModel.Core;使用Windows.UI.Core的 ;使用Windows.UI.Xaml的 ; using Windows.UI.Xaml.Controls;
public sealed partial class MainPage : Page { private DispatcherTimer refreshTimer; public MainPage() { this.InitializeComponent(); this.refreshTimer = new DispatcherTimer() { Interval = new TimeSpan(0, 0, 30) }; refreshTimer.Tick += async (sender, e) => { await DisplayMostRecentLocationData(string.Empty); }; } private async Task DisplayMostRecentLocationData(string s) { await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,() => { }); } }
}
的委託不正確。 'async(sender,e)=>'或使用'EventArg'派生的類用於'e' – Nkosi