0
我想创建一个可以在任何地方使用的,运行后台工作进程的类,如果正在运行,将会打开一个模态窗体,显示它的进度和其他形式不可用,但难以解决。以为我可以做到以下几点,但似乎并不奏效。任何其他想法?C#在后台工作人员的类中打开模态窗体
我可能会完全绕了错误的方式,但这里是我砍下代码:
public partial class Main : Form
{
public Main()
{
// load the database
Database.Load(this);
InitializeComponent();
}
}
namespace Blah.Common
{
public static class Database
{
private static Progress progressForm = new Progress();
public static void Load(Form parentForm)
{
bw.WorkerReportsProgress = true;
bw.WorkerSupportsCancellation = true;
bw.DoWork += (obj, e) => bw_DoWork(parentForm);
bw.RunWorkerAsync();
}
private static void bw_DoWork(Form parentForm)
{
progressForm.ShowDialog(parentForm);
progressForm.UpdateLabel("Loading...");
doHeavyProcess();
progressForm.Dispose()
}
}
}
当然!我试图把showdialog放在bw的东西之前,它显然失败了,因为它不得不等待我关闭它才能继续。我没有想到在RunWorkerAsync之后放置它。 如果我在bw_RunWorkerCompleted中关闭了表单,那么其他一切都会继续。 –