zoukankan      html  css  js  c++  java
  • Control.Invoke注意事项

     if (textBoxMsg.IsHandleCreated) textBoxMsg.BeginInvoke((ThreadStart)delegate { textBoxMsg.AppendText("msg"); });

    调用Invoke或BeginInvoke之前注意检查IsHandleCreated属性,否则如果在窗体初始化之前或窗体关闭之后调用Invoke或BeginInvoke将会出错

    Invoke会阻塞调用线程进入UI线程BeginInvoke则不会

    BeginInvoke的原理是将调用的方法Marshal成消息,然后调用Win32 API中的RegisterWindowMessage()向UI窗口发送消息。----摘自"Invoke和BeginInvoke的真正涵义"一文中的评论

    如果在单独线程中(IsBackground=false)调用Control.Invoke的时候窗体正好被用户关闭了将导致程序无法退出

    解决办法是改用BeginInvoke

  • 相关阅读:
    hdu 2295 DLX
    hdu 4714 树形DP
    hdu 4711 动态规划
    hdu 3656 DLX
    hust 1017 DLX
    hdu 3938 并查集
    hdu 3652 打表
    poj 2152 树形DP
    洛谷P1266速度限制
    洛谷P1841重要的城市
  • 原文地址:https://www.cnblogs.com/djian/p/1947474.html
Copyright © 2011-2022 走看看