2015年11月

在windows窗体应用开发过程中,为提高性能,会使用到多线程。

如果直接在线程中设置Textbox的Text属性等操作,程序就会抛出了如下问题:

未处理InvalidOperationException

"System.InvalidOperationException"类型的未处理异常在System.Windows.Forms.dll中发生

其他信息:线程间操作无效:从不是创建控件"xxxx"的线程访问它。

一个比较简单的解决方案如下:

将 CheckForIllegalCrossThreadCalls 属性的值设置为 false

访问Windows窗体控件本质上不是线程安全的。如果有多个线程同事操作某一控件的状态,则可能会迫使该控件进入一种不一致的状态。还可能出现其他线程相关的BUG,包括争用情况和死锁。确保以线程安全方式访问控件非常重要。

可以通过以委托的方式调用来处理线程安全的问题,详情可以移步MSDN官方文档:如何对 Windows 窗体控件进行线程安全调用

在Ubuntu环境中,为了方便,使用apt-get install php5命令安装php,完成后编译安装Phalcon扩展,提示缺少phpize,这个工具是默认没有安装的。

安装phpize:

sudo apt-get install php5-dev 

升级完El Capitain 后,目录权限出了问题,导致brew无法使用,修复方法如下:

sudo chflags norestricted /usr/local && sudo chown $(whoami):admin /usr/local && sudo chown -R $(whoami):admin /usr/local