【问题标题】:Get loop value from a method in another class从另一个类中的方法获取循环值
【发布时间】:2022-08-17 17:43:42
【问题描述】:

我创建了一个复制文件和文件夹的方法,这个方法存在于一个名为的类中帮手

static void List(string folder)
{
//methods to get files and folders and return IEnumerable

   foreach (var dname in directories)
       Copy(dname);
   foreach (var fname in files)
       Copy(fname);
}

效果很好,但是当用户单击主窗体.

到目前为止我有这个代码,应该添加任务或类似的获得进度,但它需要一个循环。

private void btnCopy_Click(object sender, EventArgs e)
{
string dir = \"Some\\\\Path\";
Helper.List(dir);
}

显然我无法跟踪我无法计算的内容,因此建议我使用委托从其他类方法中获取值,但我才刚刚开始,我未能在线找到一些有用的帮助。 有什么帮助吗?

  • 您可能想看看official MS docs。简而言之,委托是一段可以作为参数传递给方法的代码
  • 添加参数Action<string> progressAction并调用progressAction(fileOrDirectoryName)。然后将记录字符串参数的委托传递给 TextBox 或其他任何东西,现在您就处于在事件处理程序中进行长时间运行的工作同时必须更新 UI 的美妙世界。
  • @CodeCaster - Action<string> progressAction 而不是 IProgress<T> 你真丢脸:D

标签: c# async-await delegates task


【解决方案1】:

看看BackgroundWorker。这允许您将 IO 工作从主线程中移除,并通过调用 ReportProgress 和处理 ProgressChanged 事件将进度传达给 UI。

由于您正在枚举文件和目录以复制它们,因此您将知道在处理这些列表时可用于确定进度百分比的总数。

【讨论】:

    猜你喜欢
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-03
    • 2012-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多