据我所知的winsdk原生界面、android ios 都需要在主线程(可认为是窗口线程)中更新界面。
你做VC开发之所以感觉到在别的线程中也可更新界面,是因为那些函数内部其实还是向窗口发了消息。
如 GetWindowText就会发送 WM_GETTEXT消息给相应的窗口句柄,窗口函数所在的线程会处理。
所以你在其他线程中调用API去控制界面不会死锁。

解决方案 »

  1.   

    造成死锁倒是不知道,我只知道可能会出错。
    比如MFC中的一个CWnd对象,在两个线程(主线程和工作者线程)中同时使用同一个CWnd对象(也就是在多线程中不加以同步的同时访问同一个C++对象),就有可能出现一些多线程的竞态问题而出错,因为MFC本身不是线程安全的,MFC的对象本身没有做线程同步。但是在实际开发中即使在多线程中使用同一个CWnd对象,很多程序员也没有发现什么异常,因为很多CWnd的方法实际上仅仅是SendMessage而已,所以没出问题。但是没出问题不代表没问题,在一个复杂的大型项目中这样用的话是迟早要出问题的,所以在MFC中只应该由主线程来操作窗口控件,这一点在MSDN和《MFC windows程序设计》上都有说到。