从 C# get set 属性调用异步方法

mis*_*ish 3 c# asynchronous async-await xamarin.forms .net-core

我有一个问题,想知道异步函数需要遵循的最佳实践。我的视图模型中有两个函数,它们是从属性的设置器中调用的。这两个函数是 async void,但我们希望将它们转换为 async of task,因为 async void 是不良代码的味道。但 setter 属性不允许我们等待。所以我想知道我应该从哪里调用这两个函数,我们也不想从构造函数中执行此操作,因为我们也不能等待函数,而构造函数不是用于此目的。我只想知道避免从属性调用异步任务函数的最佳实践。我想设置并填充属性更改的数据,因此我们从属性调用异步函数。

Mar*_*ell 5

我只想知道避免从属性调用异步任务函数的最佳实践。

简单的; 不。考虑一个方法而不是属性,而不是属性 getter/setter实际上只是遵循约定的常规方法- 并且该约定不适用于异步代码。

所以:而不是:

public string Something
{
    get => ???
    set => ???
}
Run Code Online (Sandbox Code Playgroud)

考虑:

public [async] Task<string> GetSomething() => // whatever you need here
public [async] Task SetSomething(string value) => // whatever you need here
Run Code Online (Sandbox Code Playgroud)