Dav*_*ave 6 c# multithreading winforms
我一直在寻找我的特定问题的答案,但没有成功.
我的程序中有一个任务需要几秒钟,我想在完成任务时显示一个新表单.新表单有一个加载栏和一些文本.
我需要显示与任务并行的新表单,否则任务将无法启动,直到我关闭新表单.
这是我现在的解决方案:
private void loadingBar()
{
frmLoading frm = new frmLoading("Please wait while the database is being backed up", "This might take several days.");
frm.ShowDialog();
}
public void Backup()
{
Thread load = new Thread(new ThreadStart(loadingBar));
load.Start();
///Execute a task.
load.Abort();
}
Run Code Online (Sandbox Code Playgroud)
所以,这个工作正常,但我的问题是:在加载线程中关闭"frm"形式以使其停止不是更好吗?
您可以在类级别声明表单,然后通过调用将其关闭。 MSDN-Windows 窗体调用
像这样:
public class Class1
{
private Form myForm;
public Class1()
{
myForm = new Form();
}
public void DoSomeWork()
{
// ===================================================
// Do Some Work...
// ===================================================
myForm.Invoke(new MethodInvoker(this.Hide));
}
public void Hide()
{
myForm.Hide();
}
public void Backup()
{
myForm.ShowDialog();
Thread load = new Thread(new ThreadStart(DoSomeWork));
load.Start();
}
}
Run Code Online (Sandbox Code Playgroud)