先写代码。这就是我想要做的。我很接近,但我认为我只需要修复我在 UpdateButton 方法中定义参数的方式。
private async void UpdateButton(Action<bool> post)
{
if (!await post())
ErrorBox.Text = "Error posting message.";
}
private void PostToTwitter()
{
UpdateButton(async () => await new TwitterAction().Post("Hello, world!"));
}
private void PostToFacebook()
{
UpdateButton(async () => await new FacebookAction().Post("Hello, world!"));
}
不幸的是,!await post()
不起作用,因为“类型‘void’不可等待。”所以问题是,如何在此方法中定义我的参数以支持 awaitable 参数?
这里是 TwitterAction().Post() 的定义...
public virtual async Task<bool> Post(string messageId){...}
最佳答案
private async void UpdateButton(Func<Task<bool>> post)
{
if (!await post())
ErrorBox.Text = "Error posting message.";
}
--编辑--
UpdateButton(()=>Post("ss"));
private async void UpdateButton(Func<Task<bool>> post)
{
if (!await post())
this.Text = "Error posting message.";
}
public virtual async Task<bool> Post(string messageId)
{
return await Task.Factory.StartNew(() => true);
}
关于c# - 传递一个 *Awaitable* 匿名函数作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12466049/