.Steve 2020-03-15 17:58 采纳率: 0%
浏览 496

C# Winform 窗口显示后由于未知原因未响应 求解

就是直接创建一个窗口,然后调了大小,传入了一个类的实例(这个类线程并发程度还挺高的,但排查并不是这个的问题)

然后创建,show() 后就卡住,主窗口正常,这个窗口不响应任何事件
求解,附源码工程

主窗口


using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using AudioBOX;
using AudioBOX.windows;
namespace Cutwndtest
{
    /// <summary>
    /// Description of MainForm.
    /// </summary>
    public partial class MainForm : Form
    {
        public MainForm()
        {
            //
            // The InitializeComponent() call is required for Windows Forms designer support.
            //
            InitializeComponent();

            //
            // TODO: Add constructor code after the InitializeComponent() call.
            //
        }
        void Button1Click(object sender, EventArgs e)
        {
            ProgramData pg=new ProgramData();
            pg.cutoption=1;
            pg.cutwndshown=0;
            MAIN ma=new MAIN();
            (new System.Threading.Thread(()=>ma.cutbitmapadapter(pg))).Start();

        }
    }
}

主后台


using System;
using System.Drawing;
using System.Windows.Forms;
using System.Threading;
using System.IO;

using AudioBOX;

using AudioBOX.windows;
namespace AudioBOX
{
    /// <summary>
    /// Description of MAIN.
    /// </summary>
    public class ProgramData
    {
        #region tipbox
        public string tiptext=String.Empty;
        public int tipstate=0;//---0:none---1:alert---2:error---3:state---4:alwayserror
        public string alerttext=String.Empty;
        public string statetext=String.Empty;
        #endregion

        public Color windowtheme;

        public double mainprocess;

        public string resultstring=String.Empty;

        #region record
        public double volume=0;
        public int recordstate=0;//---0:none---1:recording---3.loadfile---4.outputfile recording---5:outputfile done

        public string recordfilepath=String.Empty;
        #endregion

        #region cut
        public Bitmap cutbitmap=null;
        public int cutstate=0; //---0:no act---1:tostring(realtime)
        public int bmpoutput=0;//---0:no---1:will output
        public int cutoption=0; //---0:uninitinstanced---1:toolwindow---2:allscreen---
        public int needtostring=0;
        public int cutwndshown=0;

        #endregion
    }
    public class MAIN
    {
        int updatetimer=50;




        public void cutbitmapadapter(ProgramData programdata)
        {


            Cutwnd cw=new Cutwnd();

            while(true)
            {
                Thread.Sleep(200);
                if(programdata.cutoption==0||programdata.cutoption==2)
                {

                }
                if(programdata.cutoption==1)
                {
                    if(programdata.cutwndshown==0)
                    {
                        programdata.cutwndshown=1;
                        cw=new Cutwnd();
                        cw.programdata=programdata;
                        cw.Show();
                    }
                }
                if(programdata.cutoption==2)
                {

                }

            }
        }

    }
}

窗口(问题所在)


using System;
using System.Drawing;
using System.Windows.Forms;

namespace AudioBOX.windows
{
    /// <summary>
    /// Description of Cutwnd.
    /// </summary>
    public partial class Cutwnd : Form
    {
        public ProgramData programdata;
        public Cutwnd()
        {
            //
            // The InitializeComponent() call is required for Windows Forms designer support.
            //
            InitializeComponent();

            //
            // TODO: Add constructor code after the InitializeComponent() call.
            //
//          this.TransparencyKey=this.BackColor=Color.AliceBlue;
        }
        void CutwndShown(object sender, EventArgs e)
        {
            programdata.cutwndshown=1;
        }
        void MiantimerTick(object sender, EventArgs e)
        {
            if(programdata.cutoption!=1)
            {
                this.Close();
                this.Dispose();
            }
        }

    }
}

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-03-15 18:18
    关注

    Thread.Sleep(200);
    后面加上一个
    Application.DoEvents();

    评论

报告相同问题?

悬赏问题

  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建