次の方法で共有


MVVM Toolkit 警告 MVVMTK0039

[RelayCommand] で注釈が付けられた非同期メソッドは、async void ではなく、Task 値を返す必要があります。 これにより、ジェネレーターは代わりに非同期コマンド ( AsyncRelayCommandAsyncRelayCommand<T>) を生成できます。これにより、コンカレンシー制御、実行の追跡などの追加機能が提供されます。

次の例では MVVMTK0039 が発生します:

using System.Threading.Tasks;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;

namespace MyApp;

public partial class SampleViewModel : ObservableObject
{
    [RelayCommand]
    private async void DoWorkAsync()
    {
        await Task.Delay(1000); // Do some work
    }
}

DoWorkAsync は非同期ですが、void を返していることがわかります。 この問題を修正するには、次のようにコードを更新します:

using System.Threading.Tasks;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;

namespace MyApp;

public partial class SampleViewModel : ObservableObject
{
    [RelayCommand]
    private async Task DoWorkAsync()
    {
        await Task.Delay(1000);
    }
}

その他のリソース

  • 単体テストでは、さらに他の例を見つけることができます。