gpt4 book ai didi

c# - 异步将多个参数传递给 ReportProgress 方法

转载 作者:行者123 更新时间:2023-11-30 14:48:01 25 4
gpt4 key购买 nike

如何将多个参数传递给 ReportProgress方法?我正在遵循本指南:MSDN创建一个进度条。我的代码如下所示。

MainWindow.xaml

public User User { get; set; }

public MainWindow()
{
InitializeComponent();
this.User = new User();
this.DataContext = User;
}

private async void Button_Click(object sender, RoutedEventArgs e)
{
var progressIndicator = new Progress<int>(ReportProgress); //here is the error
await this.User.ReadUsers(progressIndicator, this.User)
}

void ReportProgress(int value, User pUser)
{
this.User.Val = value;
}

User.xaml

public async Task<bool> ReadUsers(IProgress<int> pProgress, User pUser)
{
for (int i = 1; i < 11; i++)
{
await Task.Delay(500);
pProgress.Report(i, pUser);
}

return true;
}

如您所见,我只是尝试向 User pUser 添加一个新参数 ( ReportProgress)方法。现在我在 Button_Click 中得到一个错误方法(行已标记)。

Argument 1: cannot convert from method group into System.Action

best overloaded method match for 'System.Progress.Progress(System.Action)'-method has some invalid arguments

no overload for Report-Method takes 2 arguments

我是这样尝试的,因为在我的实际应用程序中我会有一个 ObersableCollection<User> .有没有更好的方法我应该去?

最佳答案

您应该手动传递第二个参数,因为“Progress”构造函数仅采用一个参数进行操作。试试这个:

new Progress<int>(i => ReportProgress(i, this.User));

并从“pProgress.Report”方法中删除第二个参数:

pProgress.Report(i); 

关于c# - 异步将多个参数传递给 ReportProgress 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42759147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com