C#使用Async和Await,错误的返回类型

时间:2018-05-09 18:20:18

标签: c#

private async System.Threading.Tasks.Task buttonPaste_ClickAsync(object sender, EventArgs e)
{
    textBoxVideoLink.Text = Clipboard.GetText(System.Windows.Forms.TextDataFormat.Text);

    string uri = textBoxVideoLink.Text;
    var youTube = YouTube.Default;
    var video = await youTube.GetVideoAsync(uri);

    textBoxVideoTitle.Text = video.Title;
}

没有可见的错误并且它会构建但是我在FormMain.Designer.cs中收到错误并且它会强调(this.buttonPaste_ClickAsync);

实际错误Task FormMain.buttonPaste_ClickAsync(object sender, EventArgs e)的返回类型错误。

1 个答案:

答案 0 :(得分:0)

今天遇到同样的问题,我有一个按钮正在向API发布一些数据,因此我不得不asynchronously进行操作以避免用户界面上的任何问题。但是它不允许方法签名为async Task,所以对我有用的很简单,我只用async Task替换了async void。例如,我将其修改为如下所示:

public async void btn1_Click(object s, EventArgs e)
{
     // await your API call.
}

PS::如果要读取和与用户界面对象进行交互(例如在标签中显示文本或将文本设置为文本框),则可能要调用该控件,以使其不会抛出任何异常线程异常,因为它可能不允许您与async method

中的UI线程进行交互