【问题标题】:Task has a wrong return type任务的返回类型错误
【发布时间】:2018-08-26 09:03:06
【问题描述】:

怎么了?以及如何解决?我正在尝试在 c#-task 中学习一个新主题。当我运行时,我收到错误消息: Error CS0407 'Task MainWindow.btn1_ClickAsync(object, RoutedEventArgs)' has the wrong return type

 public async Task btn1_ClickAsync(object sender, RoutedEventArgs e)
            {
                txtState.Text = "btn1_Click started";
               await LongRunningFunc1();
                txtState.Text = "btn1_Click finished";

            }

        private async Task LongRunningFunc1()
        {
            txt1.Text = "Processing 1 .....";
            btn1.Content = "Wait";
            await Task.Delay(5000);
            txt1.Text = "Hello From Func1";
            btn1.Content = "Click";
        }

wpf 设计师:

<Grid>
        <TextBlock Name="txtState" Margin="265,10,274,356"/>
        <TextBlock Name="txt1" Height="50" RenderTransformOrigin="0.966,-0.95" Margin="281,68,320,301"/>
        <TextBlock Name="txt2" Height="50" Margin="253,238,274,131" />
        <Button Name="btn1" Background="Red" Margin="281,127,300,208" Click="btn1_ClickAsync"></Button>
        <Button Name="btn2" Background="Aqua" Margin="298,309,311,27"></Button>
    </Grid>

【问题讨论】:

标签: c# wpf task


【解决方案1】:

按钮单击事件是可以接受async void 的少数方法签名之一。改变你的阅读方式

public async void btn1_ClickAsync(object sender, RoutedEventArgs e)

你应该没事。

【讨论】:

  • 是的,谢谢它的工作,但我们需要确保页面在 asp.net 页面上标记为
【解决方案2】:

事件处理程序必须是async void 方法:

public async void btn1_ClickAsync(object sender, RoutedEventArgs e)

【讨论】:

    【解决方案3】:

    因为它是一个事件处理程序,它应该是async void

    public async void btn1_ClickAsync(object sender, RoutedEventArgs e)
    

    请注意,async void 是一种特殊情况,通常应避免使用。详情请见async/await - when to return a Task vs void?

    【讨论】:

      【解决方案4】:

      WPF 事件通常是RoutedEventHandler,即它们具有签名void RoutedEventHandler(object sender, RoutedEventArgs e)。您的 btn1_ClickAsync 不匹配,因此出现错误消息。

      您可以使用public async void btn1_ClickAsync(...) 修复它。事件处理程序也是您使用async void 函数的唯一时间。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-19
        • 2020-12-05
        • 1970-01-01
        • 2021-03-16
        • 2021-04-15
        • 1970-01-01
        • 1970-01-01
        • 2015-12-05
        相关资源
        最近更新 更多