.NET Compact Framework多线程下的等待事件

在WinCE或者Windows Moblie开发中常常把大量的批处理工作提交给工作进程 (Worker Thread)进行,当批处理工作完成时,或者该进程发生失败以及异常的 时候需要通知界面进程(UI Thread)进行同步。(PS:有时候同步的是两个 worker thread,而不是UI Thread,这由具体应用来决定。)这时候往往需要等 待事件。。NET Framework 提供的等待事件封装在System.Threading.WaitHandle 里面。但是。NET Compact Framework下的WaitHandle不能提供。NET Framework 所有的功能,在等待时间里只是提供了WaitOne功能(只能等待一个Event)。其 实在一般的应用,UI进程往往等待一个事件就够了,下面演示WaitOne的使用。

由于WaitHandle是一个抽象类(abstract class),所以例子使用其sub- class AutoResetEvent .

定义field,父线程和子线程都需要访问到

private static AutoResetEvent autoEvent = new AutoResetEvent (false);

public bool Connect()
{
            //Do sth. eg make connections.
            ThreadPool.QueueUserWorkItem(
            new WaitCallback(CheckConnection), null);

            // Wait for work method to signal.
            if (autoEvent.WaitOne(5000, false))
            {
                return true;
            }
            else
            {
                return false;
            }
}

private void CheckConnection(Object stateInfo)
{
    while(true)
    {
            if (CheckConnection())
            {
                // Signal that work is finished.
                autoEvent.Set();
            }
    }
}

时间: 2024-09-19 20:34:51

.NET Compact Framework多线程下的等待事件的相关文章

.NET Compact Framework多线程环境下的UI异步刷新

在进行WinCe或者Windows Mobile开发中,通常需要把一些任务提交给工作线程(Worker Thread)完成,当worker thread 线程发生状态变更的时候需要通知UI进程刷新UI,比如一个网络连接程序,Worker Thread线程负责管理WiFi,GPRS或者3G等连接,当连接状态发生改变时候,Worker Thread把更新状态通知UI Thread,而UI Thread更新UI通知用户. 这里常常有个疑问,为什么Worker Thread不直接更新UI,这样更简单直接

[20150520]使用gdb查看等待事件.txt

[20150520]使用gdb查看等待事件.txt -- 昨天开始重看vage-- 使用gdb 看等待事件这部分内容跳过了,今天测试看看.如何操作. -- 实际上设置断点在gdb下,11g等待事件的起始函数是kslwtbctx函数.还是通过演示来说明: 1.测试环境: SCOTT@test> @ver1 PORT_STRING                    VERSION        BANNER ------------------------------ -------------

.NET Compact Framework下的3G应用

在.NET Compact Framework下开发3G应用可以有两个options,1:AT command, 2:RAS.其实RAS最终也是通过AT command来管理3G设备,RAS屏蔽了技术细节,很方便地建 立TCP/IP based 的网络连接,所以推荐使用RAS,WinCE本身提供了native API可以直接操作RAS,管理3G设备及其连接.与此同时RAS也支持有线电话拨号,GPRS等应用. RAS简介 RAS的详细介绍见 Overview of RAS 由于.NET Compa

《C#多线程编程实战(原书第2版)》——3.6 在线程池中使用等待事件处理器及超时

3.6 在线程池中使用等待事件处理器及超时 本节将描述如何在线程池中对操作实现超时,以及如何在线程池中正确地等待. 3.6.1 准备工作 为了学习本节,你需要安装Visual Studio 2015.除此之外无需其他准备.本节的源代码放置在BookSamples\Chapter3\Recipe5目录中. 3.6.2 实现方式 请执行以下步骤来了解在线程池中实现超时及正确的等待: 1.启动Visual Studio 2015.新建一个C#控制台应用程序项目. 2.在Program.cs文件中加入以

.NET Compact Framework下Win32 API P/Invoke的使用

由于CF是一个精简(Compact)的.NET Framework,因此在开发CF应用时有一部分功能MS并没有在CF中实现,需要直接调用Win32的API来实现.由于Win32的API是面向native代码的,一般会提供一个DLL库以及相应header文件.使用C++是十分容易和简单调用这些API,但是使用C# .NET就没那么幸运了.C#调用Win32的API往往要借助于P/Invoke的帮助,下面讲述一下P/Invoke 的使用. API的引入 调用Win32的API需要引入相应的DLL,W

.NET Compact Framework下的进程间通信之MSMQ开发

上篇讲到WinCe下的MSMQ安装 ,这篇讲述一下MSMQ在.NET Compact Framework 下的开发. 所谓MQ就是Message Queue,消息队列.消息队列可以作为不同应用程序之间 ,甚至不同机器之间通信的渠道.在消息队列下进行通信的内容称为消息 (Message),在C#程序下Message就是对象. MSMQ就是Microsoft公司提供的MQ服务程序.MQ服务程序负责管理消息队列, 保证消息在消息队列这一渠道下能无误的发送到对端,MQ支持离线交易,有时候 消息会缓存在M

.NET Compact Framework下的进程间通信之Windows Message

在Wince和Windows Moblie 下的进程间通信可以由以下几种技术实现. 1. Windows Message 2. Point-to-Point Message Queues 3. MSMQ 下面使用讲述.NET Compact Framework下使用Windows Message进行进程间的 通信. 引用库 在CF.net下进行Windows Message的开发需要引用Microsoft.WindowsCE.Forms ,该DLL一般存放于C:\Program Files\Mi

.NET Compact Framework下SQL CE的使用

在Wince和Windows Mobile下最常用的数据库为SQL CE,SQL CE也曾经叫做SQL Server for Windows CE和SQL Server Mobile Edition,最新版本命名为SQL Server Compact 3.5 SP1. SQL Server Compact不仅仅能运 行于Wince和Windows Mobile,而且能运行于Windows的PC上,是Access的有效替代品,如果不使用存储 过程,在SQL Server Compact下开发的程序

.NET Compact Framework下的单元测试

在 Wince和Windows Mobile下native C++的单元测试里讲述了在Wince和Windows Mobile下native C++ 进行单元测试的方法,这篇将会讲述.NET Compact Framework下的单元测试.在.NET Compact Framework 下可以使用NUintLite进行单元测试. NUintLite是简化版的NUnit,可以应用于.NET Compact Framework,Mono等平台. 生成NUnitLite库 NUintLite已经从co