.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 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?