C# BackgroundWorker_DoWork和进度条progressBar1 绑定,逐行处理耗时任务
【代码】C# BackgroundWorker_DoWork和进度条progressBar1 绑定,逐行处理耗时任务。
private backgroundworker backgroundworker;
private void usercontrolcodeoperation_load(object sender, eventargs e)
{
initialization();
checkboxoperation.enabled = false;
checkboxcommand.enabled = false;
backgroundworker = new backgroundworker
{
workerreportsprogress = true,
workersupportscancellation = true
};
backgroundworker.dowork += backgroundworker_dowork;
backgroundworker.progresschanged += backgroundworker_progresschanged;
backgroundworker.runworkercompleted += backgroundworker_runworkercompleted;
}
int count = 100;
private void backgroundworker_dowork(object sender, doworkeventargs e)
{
if (codelines.count > 0)
{
count = codelines.count;
}
for (int i = 0; i < count; i++)
{
if (backgroundworker.cancellationpending)
{
e.cancel = true;
break;
}
backgroundworker.reportprogress(i, codelines[i]);
}
}
private void startbackgroundwork()
{
progressbar1.visible = true;
progressbar1.value = 0;
loadimg.left = this.width / 2 - 38;
loadimg.visible = true;
string datetimenow = string.format("{0} {1} {2}", datetime.now, "startbackgroundwork", environment.newline);
string dirpath = system.io.path.getdirectoryname(system.windows.forms.application.executablepath);
string filename = string.format("log_{0:yyyymmdd}.log", datetime.now);
string filepath = system.io.path.combine(dirpath, "log", filename);
analysiscodeclass.codefile.writelog(filepath, datetimenow);
if (!backgroundworker.isbusy)
{
backgroundworker.runworkerasync();
}
}
private void backgroundworker_progresschanged(object sender, progresschangedeventargs e)
{
console.write(e.progresspercentage);
console.write(e.userstate);
if (e.progresspercentage * 100 / count > 100)
{
progressbar1.value = 100;
}
else
{
progressbar1.value = e.progresspercentage * 100 / count;
}
string datetimenow = string.format("{0} {1} {2}", datetime.now, "", environment.newline);
console.write(datetimenow);
classcodestruct.codeline codeline = (classcodestruct.codeline)e.userstate;
console.write(codeline.code);
displaycodelines(codeline, e.progresspercentage);
}
private void backgroundworker_runworkercompleted(object sender, runworkercompletedeventargs e)
{
progressbar1.visible = false;
if (e.cancelled)
{
progressbar1.visible = false;
messagebox.show("取消成功");
}
else if (e.error != null)
{
messagebox.show("执行出错 " + e.error);
}
else
{
var res = e.result;
progressbar1.value = 100;
progressbar1.visible = false;
loadimg.visible = false;
setcombobox();
string datetimenow = string.format("{0} {1} {2}", datetime.now, "backgroundworker_runworkercompleted", environment.newline);
string dirpath = system.io.path.getdirectoryname(system.windows.forms.application.executablepath);
string filename = string.format("log_{0:yyyymmdd}.log", datetime.now);
string filepath = system.io.path.combine(dirpath,"log", filename);
analysiscodeclass.codefile.writelog(filepath, datetimenow);
}
}
#region 写日志文件
public static void writelog(string filename, string text)
{
string path = path.getdirectoryname(filename);
if (!system.io.directory.exists(path))
{
system.io.directory.createdirectory(path);
}
using (streamwriter sw = new streamwriter(filename, true))
{
sw.writeline(text);
}
}
#endregion
相关文章:
-
-
-
-
4、设置一个次低值和次高值,如果温湿度超过该阈值客户端有报警显示“超出正常温度范围”,并显示是哪个节点出现问题 再设置一个最高值和最低值 ,如果温湿度超过该阈值客户端有报警显示,并…
-
-
去年,Meta 推出了 AI 功能,允许广告主创建动态背景、增强图像并生成源自其原始内容的各种广告文本版本。这主要是侧重于通过测试图片和文本等创意元素来优化广告效果。在最新的更新中…
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论