gpt4 book ai didi

c# - 启动多个 gui (WinForms) 线程以便它们可以与 C# 中的一个主 gui 分开工作?

转载 作者:太空宇宙 更新时间:2023-11-03 18:48:17 25 4
gpt4 key购买 nike

我有一个 MainForm 窗口,用户可以从该窗口按 3 个按钮。每个按钮都会启动新的表单,用户可以在其中做任何他喜欢的事情(比如耗时的数据库调用等)。所以我决定将每个表单放在它自己的线程中:

   private Thread subThreadForRaportyKlienta;
private Thread subThreadForGeneratorPrzelewow;
private Thread subThreadForRaporty;
private void pokazOplatyGlobalne() {
ZarzadzajOplatamiGlobalneDzp varGui = new ZarzadzajOplatamiGlobalneDzp();
varGui.ShowDialog();
}
private void pokazRaportyKlienta() {
RaportyDzpKlient varGui = new RaportyDzpKlient();
varGui.ShowDialog();
}
private void pokazRaportyWewnetrzne() {
RaportyDzp varGui = new RaportyDzp();
varGui.ShowDialog();
}
private void pokazGeneratorPrzelewow() {
ZarzadzajPrzelewamiDzp varGui = new ZarzadzajPrzelewamiDzp();
varGui.ShowDialog();
}
private void toolStripMenuGeneratorPrzelewow_Click(object sender, EventArgs e) {
if (subThreadForGeneratorPrzelewow == null || subThreadForGeneratorPrzelewow.IsAlive == false) {
subThreadForGeneratorPrzelewow = new Thread(pokazGeneratorPrzelewow);
subThreadForGeneratorPrzelewow.Start();
} else {

}

}
private void toolStripMenuGeneratorRaportow_Click(object sender, EventArgs e) {
if (subThreadForRaporty == null || subThreadForRaporty.IsAlive == false) {
subThreadForRaporty = new Thread(pokazRaportyWewnetrzne);
subThreadForRaporty.Start();
} else {

}
}
private void toolStripMenuGeneratorRaportowDlaKlienta_Click(object sender, EventArgs e)
{
if (subThreadForRaportyKlienta == null || subThreadForRaportyKlienta.IsAlive == false) {
subThreadForRaportyKlienta = new Thread(pokazRaportyKlienta);
subThreadForRaportyKlienta.Start();
} else {

}
}

我有几个问题,希望有人能解释一下:

  1. 当我使用 Show() 而不是 ShowDialog() 时,窗口只会闪烁一秒钟,而不会显示。这两者之间的实际区别是什么?为什么会这样?
  2. 当我使用 ShowDialog 时,一切看起来都很正常,但我注意到在其中一个 gui 中并没有正确填充所有内容(一个 listView 保持空白,即使 Form_Load() 中有 3 个简单的添加项) 。我只在一个 GUI 中注意到这一点,即使你乍一看在其他两个 GUI 中一切正常,我也可以在这些表单中执行多个任务,也在后台更新这些表单(从表单方法内部)。为什么会这样一个不一样?
  3. 这样做的正确方法是什么?在这些表单中的每一个中执行的任务都可能非常耗时,我想让用户可以毫无问题地在这 4 个窗口之间跳转,以便他可以执行他喜欢的操作。

最佳答案

区别在于 Modal and Modeless Windows Forms .

Modeless forms let you shift the focus between the form and another form without having to close the initial form

Show() 方法用于此目的

关于c# - 启动多个 gui (WinForms) 线程以便它们可以与 C# 中的一个主 gui 分开工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2359493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com