ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c#中在工作线程创建窗体并操作

2020-01-11 14:42:10  阅读:762  来源: 互联网

标签:线程 form c# button form2 窗体 MP new true


实例1      

 public void CycleShow()//循环绘图
        {

            Task.Factory.StartNew(() =>
            {
         //  threadB = new Thread(
         //() => {

             AllDealWithSpectrumDicSingle.Clear();

             Form form = new MyForm();
            form.ShowInTaskbar = true;
             form.FormBorderStyle = FormBorderStyle.Sizable;
             form.StartPosition = FormStartPosition.Manual;
             form.Location = new Point(MP_MappingChildFormPosition.SingleSpectrumPosition_X, MP_MappingChildFormPosition.SingleSpectrumPosition_Y);
             Pb_Single = new PictureBox();
             form.BringToFront();
             form.Width = MP_MappingChildFormPosition.SingleSpectrumPosition_Width;
             form.Height = MP_MappingChildFormPosition.SingleSpectrumPosition_Height;
             // form.ControlBox = false;
             form.Controls.Add(Pb_Single);
             Pb_Single.Dock = DockStyle.Fill;
             Pb_Single.Visible = true;


             form.Visible = true;
             //form.Show();
             while (!MP_LogicManager.StopExit)
             {


                 var va = new KeyValuePair<Point, SpectrumBaseInManager>();
                 lock (memotryLockSingle)
                 {
                     if (AllDealWithSpectrumDicSingle.Count <= 0) continue;
                     va = AllDealWithSpectrumDicSingle.First();
                 }
                 Application.DoEvents();
                 DrawSingleSpec(va);//画单张谱图
                 //Thread.Sleep(1);
                 form.TopMost = true;
                 form.BringToFront();
             }
             form.Close();


         //}
         //);
         //   threadB.IsBackground = true;
         //   threadB.Start();


            });


           //  threadA = new Thread(
           //() => {


             Task.Factory.StartNew(() =>
             {
             AllDealWithSpectrumDicMulti.Clear();

                Form form2 = new MyForm();
                form2.ShowInTaskbar = true;
                form2.FormBorderStyle = FormBorderStyle.Sizable;
                form2.Location = new System.Drawing.Point(MP_MappingChildFormPosition.MultiSpectrumPosition_X, MP_MappingChildFormPosition.MultiSpectrumPosition_Y);
                Pb_Multi = new PictureBox();
                form2.BringToFront();
                form2.Width = MP_MappingChildFormPosition.MultiSpectrumPosition_Width;
                form2.Height = MP_MappingChildFormPosition.MultiSpectrumPosition_Height;
              //  form2.ControlBox = false;
                form2.Controls.Add(Pb_Multi);
                Pb_Multi.Dock = DockStyle.Fill;
                Pb_Multi.Visible = true;
                form2.StartPosition = FormStartPosition.Manual;
             
                form2.Visible = true;
                form2.Show();
                int count = 0;
                AllDealWithSpectrumDicMulti.Clear();
                while (!MP_LogicManager.StopExit)
                {
                 
                    var va = new KeyValuePair<Point, SpectrumBaseInManager>();
                    Dictionary<Point, SpectrumBaseInManager> AllDealWithSpectrumDic_Draw=new Dictionary<Point, SpectrumBaseInManager>();
                    lock (memotryLockMulti)
                    {
                        if (AllDealWithSpectrumDicMulti.Count <= 0) continue;
                        va = AllDealWithSpectrumDicMulti.Last();
                       if(AllDealWithSpectrumDicMulti.Count>2)
                        {
                           for(int i=0;i<2;i++)
                            {
                               
                               var va2 = AllDealWithSpectrumDicMulti.ElementAt(AllDealWithSpectrumDicMulti.Count - 1 - i);
                                AllDealWithSpectrumDic_Draw.Add(va2.Key,va2.Value);
                            }
                        }
                       else
                        {
                           for(int i=0;i< AllDealWithSpectrumDicMulti.Count;i++)
                            {

                                var va2 = AllDealWithSpectrumDicMulti.ElementAt(i);
                                AllDealWithSpectrumDic_Draw.Add(va2.Key, va2.Value);

                            }


                        }

                    }
                     Application.DoEvents();
                     DrawMultiSpec(va, AllDealWithSpectrumDic_Draw);//画多张谱图     

                    count++;
                    //if (count > 2)
                    //{
                    //    form2.Close();
                    //    return;
                    //}
                    //Thread.Sleep(500);
                    form2.TopMost = true;
                    form2.BringToFront();
                }
                form2.Close();
           //}
           //);
           // threadA.IsBackground = true;       
           // threadA.Start();

            });
        }

 

实例2

    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Task.Factory.StartNew(() => {
                Form form = new Form();
                form.StartPosition = FormStartPosition.CenterScreen;
                form.Width = 500;
                form.Height = 500;
                Button button = new Button();
                form.Controls.Add(button);
                button.Location = new Point(0, 0);
                button.Width = 50;
                button.Height = 20;
                button.Click += new EventHandler(button_Test_Click);
                form.ShowDialog();
                //或
                //Application.Run(form)
               // Application.DoEvents();唤醒窗体
                //form.Show();
            });

          
        }
         private void button_Test_Click(object sender, EventArgs e)
        {
            Thread.Sleep(10000);//创建此button的工作线程阻塞,但是其他的,例如主ui线程不阻塞
        }
    }

luckyone906 发布了163 篇原创文章 · 获赞 264 · 访问量 107万+ 他的留言板 关注

标签:线程,form,c#,button,form2,窗体,MP,new,true
来源: https://blog.csdn.net/u011555996/article/details/103936297

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有