WINCE下C#编程锦囊(1)

本文介绍了一位C#初学者在WINCE环境下进行多线程UI更新时遇到的问题及解决方案。通过定义委托并在外部线程中调用特定方法,成功解决了NotSupportException异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本人是C#初学者,本文用于记录开发过程中遇到的书本上难于找到的问题。


C# in WINCE问题之一:Control.Invoke 关键词:C# WINCE 多线程 控件 委托 NotSupportedException

由于C#使用了多线程,并且需要在非Form所有者线程里更新Form

不知是什么原因。按照MSDN的例程标准编写的C#程序,总是没法在WINCE终端上成功执行,不管用同步Invoke或是异步BeginInvoke的方法,都会出现NotSupportException异常,在网上找了多种解决方法未果。

之前我都是采用在调用者类里定义委托的方式,今天看了http://www.cnblogs.com/smartstone/archive/2008/06/23/1228180.html这篇文章,抱着试一试的心态,测试了异步委托调用和同步委托调用,居然发现该终端支持同步委托。代码如下:

public delegate void DeleSetMyView(mystruct info);//mystruct 为自定义的变量

void SetMyView(mystruct info)

{

// 这里是对界面做更新的代码

}

void CrossSetMyView(mystruct info)

{

if(this.InvokeRequired)

{

DeleSetMyView objectDeleSetMyView = new DeleSetMyView(CrossSetMyView);//初始化一个委托调用

try

{

this.Invoke(objectDeleSetMyView ,new object[] { info } );

}

catch

{

}

}

else

{

SetMyView(info);

}

}

只需要直接在外部线程调用CrossSetMyView就可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值