Aqu*_*s24 2 c# winforms progress-bar
我正在使用c#处理Windows应用程序.
我有一个表格和一个有所有方法的课程.
我在课堂上有一个方法,我正在处理arraylist中的一些文件.我想为此文件处理调用进度条方法,但它不起作用.
任何帮助
PFB我的代码片段:
public void TraverseSource()
{
string[] allFiles1 = Directory.GetFiles(sourcePath, "*.xml", SearchOption.AllDirectories);
var allFiles = new ArrayList();
var length = allFiles.Count;
foreach (string item in allFiles1)
{
if (!item.Substring(item.Length - 6).Equals("MD.xml"))
{
allFiles.Add(item);
// Here i want to invoke progress bar which is in form
}
}
}
Run Code Online (Sandbox Code Playgroud)
您将需要使用BackgroundWorker组件,其中DoWork处理程序包含您的实际工作(string[] allFiles1部件及更高版本).它看起来像这样:
public void TraverseSource()
{
// create the BackgroundWorker
var worker = new BackgroundWorker
{
WorkerReportsProgress = true
};
// assign a delegate to the DoWork event, which is raised when `RunWorkerAsync` is called. this is where your actual work should be done
worker.DoWork += (sender, args) => {
string[] allFiles1 = Directory.GetFiles(sourcePath, "*.xml", SearchOption.AllDirectories);
var allFiles = new ArrayList();
foreach (var i = 0; i < allFiles1.Length; i++)
{
if (!item.Substring(item.Length - 6).Equals("MD.xml"))
{
allFiles.Add(item);
// notifies the worker that progress has changed
worker.ReportProgress(i/allFiles.Length*100);
}
}
};
// assign a delegate that is raised when `ReportProgress` is called. this delegate is invoked on the original thread, so you can safely update a WinForms control
worker.ProgressChanged += (sender, args) => {
progressBar1.Value = args.ProgressPercentage;
};
// OK, now actually start doing work
worker.RunWorkerAsync();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14695 次 |
| 最近记录: |