在C#中同时运行两个函数

时间:2013-05-08 20:09:09

标签: c# multithreading

我在项目中创建了一个类库,用于扫描一系列文件。在我使用此DLL作为参考的主项目中,我想创建一个进度条,显示到目前为止已扫描了多少文件。

dll类使用foreach循环,因为它的目的是将每个文件转换为哈希代码。 foreach循环已用于将文件的每个转换段连接在一起,这样我就可以拥有512位长的代码,然后进入下一个文件。

我在dll类中定义了一个变量 - >

public static int value_ = 0;

此变量在foreach循环结束时更新。

现在在我的主项目中,我想在我的类库项目中的函数运行的同时使用此变量来更新我的进度条。

例如:

DLL.function();
pb.value = value_;

我很欣赏任何关于如何实现这一点的提示。

2 个答案:

答案 0 :(得分:3)

您可以使用Background Worker执行工作并报告进度。

worker.WorkerReportsProgress = true;

现在您可以通过您订阅的活动触发此进度报告。

worker.ProgressChanged += new ProgressChangedEventHandler(worker_ProgressChanged);

这样,您可以创建一个进度条,而不是根据您的方法触发的worker_ProgressChanged事件更新自己。

答案 1 :(得分:0)

您的主程序必须使用线程调用您的函数,Background Worker可以帮助您解决此问题。

要更新进度条,您必须查看事件和委托。每次处理项目时,都可以举办活动。然后您的主程序可以处理此事件并更新进度条。