DalySprace 2022-10-18 21:34 采纳率: 100%
浏览 89
已结题

C#主线程等待弹出窗体参数时,整个程序死锁

【现象描述】:
(1)编写程序时,经过一个if条件判断触发“打开Form2”窗体的操作;紧接着在其后有一个for循环,用来判断Form2关闭时所传递到Form1的“参数1”是否改变,改变的话就退出循环,继续执行下面其他程序语句
(2)问题:

  • ①窗体Form2打开后,由于执行了(1)的for语句,Form2的控件不能正常加载,Form1与Form2同时出现类似“死锁”而不能操作的现象,然后只能通过任务管理器或者编程软件去关闭。

(3)不明白的地方:

  • ①出现上述现象具体原因是什么?有没有好的解决办法?

  • ②C#如何编程实现下面功能:
    (1)开启新窗体,新窗体要正常操作,实现其所属的功能(比如填写数据,传递数据)
    (2)窗体开启之后,需要创建程序段去等待新窗体操作传递的数据
    (3)主线程接收到数据后再继续执行后面的程序

多谢,祝万事如意!

img

img


```c#
if (textBox31.Text != string.Empty)
                        {
                            Form 参数填写 = new 参数填写弹窗();
                            //参数填写.Parent = this;
                            参数填写.Location = new Point(this.button1.Location.X, this.button1.Location.Y);
                            参数填写.Show();
                        }

                        while (true)
                        {
                            if (弹窗关闭标志接收 == true)
                            {
                                //进度条数值继续增加标志
                                进度条暂停 = false;
                                //跳出死循环
                                break;
                            }

                        }

                        continue; //继续上一层for循环执行


  • 写回答

3条回答 默认 最新

  • wanghui0380 2022-10-19 10:32
    关注
     Form form1 = new Form();
                //既然你不让关闭,那么请用模态窗体
                //至于什么检查数据更新,要么交给新窗体做
                //要么使用委托,让新窗体调用委托
                
                if (form1.ShowDialog() == DialogResult.OK)
                {
    
                }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 11月2日
  • 已采纳回答 10月25日
  • 修改了问题 10月19日
  • 创建了问题 10月18日

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助