zoukankan      html  css  js  c++  java
  • c# {"Undo 操作遇到的上下文与相应 Set 操作中应用的上下文不同。可是因为在线程上 S

    异步套接字接收信息,弹出窗口。接收信息,弹出窗口

    {"Undo 操作遇到的上下文与相应 Set 操作中应用的上下文不同。可是因为在线程上 S

    原因是由于多线程操作窗口资源的问题,必须托管到创建资源的线程来实现。异步socket实际上就是生成子线程的

    环境vs2015 C#是一个form1是用户名密码登陆,通信是用异步socket写的,如果登陆成功则

                this.Visible = false;
                Form2 form2 = new Form2();
                form2.ShowDialog();
    此时form2最大化,最小化,或者是       
    做一些其他操作的时候就会抛出未处理InvalidOperationException,Undo   操作遇到的上下文与相应   Set   操作中应用的上下文不同
    ,猜想可能与form2是由一个异步socket生成的有关,异步socket实际上就是生成子线程的,所以将
                this.Visible = false;
                Form2 form2 = new Form2();
                form2.ShowDialog();
    部分写为委托利用Invoke使其由主线程执行
    更改后问题得到解决,原因仍然没有想明白,你也可以试验一下将可疑的操作都交给Invoke操作。
    delegate void ShowForm2(); 

    m_ShowForm2 = new ShowForm2(LogigShowform2);  

    public void LogigShowform2()  
            {
                this.Visible = false;
                Form2 form2 = new Form2();
                form2.ShowDialog();
            }

    Invoke(m_ShowForm2);

    ////------------------

     delegate void delegate_ShowReminder();

     Form_Material_Arriving_Reminder form_material = new Form_Material_Arriving_Reminder();//Form_Material_Arriving_Reminder 是弹出窗口的form类

     public void Showmyneed(object sender, DataEventArgs e)
            {
                string words = Encoding.UTF8.GetString(e.Data, e.Offset, e.Length);
                label1.Text = words;
                label1.ForeColor = Color.Red;
                button8.Text = "呼叫";
    
               // LoadReminderWindow(words);
    
                tcpClientSession.DataReceived -= Showmyneed;
    
    
                //  callOnClick(button_reminder_window);
                // string words = label1.Text;                     
                //   form_material.label_MessageText.Text = button5.Text + "
    " + words;
                //   form_material.ShowDialog();
                //  form_material.Show();
                //  form_material.Dispose();
    
               
                delegate_ShowReminder m_ShowForm_reminder = new delegate_ShowReminder(ShowformReminder);
                Invoke(m_ShowForm_reminder);
    
    
    
        }
     public void ShowformReminder()
            {
                //  this.Visible = false;
                Form_Material_Arriving_Reminder form_material = new Form_Material_Arriving_Reminder();
                form_material.label_MessageText.Text = button5.Text + "
    " + label1.Text;
                form_material.ShowDialog();
                form_material.Dispose();
    
    
    
            }
    欢迎讨论,相互学习。 txwtech@163.com
  • 相关阅读:
    bzoj3295: [Cqoi2011]动态逆序对
    bzoj3262: 陌上花开
    bzoj1176: [Balkan2007]Mokia
    bzoj1935: [Shoi2007]Tree 园丁的烦恼
    [APIO / CTSC2007]数据备份 --- 贪心
    [APIO2007]风铃 --- 贪心
    [NOI2015]寿司晚宴 --- 状压DP
    [NOI2007]货币兑换 --- DP + 斜率优化(CDQ分治)
    [NOI2009]诗人小G --- DP + 决策单调性
    [HNOI2008]玩具装箱TOY --- DP + 斜率优化 / 决策单调性
  • 原文地址:https://www.cnblogs.com/txwtech/p/14755125.html
Copyright © 2011-2022 走看看