.Net Compact Framework:SynchronizationContext的替代方案

.Net Compact Framework:SynchronizationContext的替代方案,.net,compact-framework,synchronizationcontext,.net,Compact Framework,Synchronizationcontext,我正在为WindowsCE6开发一个程序,该程序由Visual Studio 2008解决方案中的两个项目组成,用VB.Net编写。以前,我为Windows桌面编写了一个类似的程序,因此我希望尽可能多地重用代码 通用结构是:第一个项目包含前端gui,第二个项目是用于串行通信的库。此库应可用于其他GUI,并且不得依赖于图形化内容,例如控件 在第二个库项目中,我使用了一个SerialPort-实例,通过SerialPort.DataReceived事件处理数据的接收。由于DataReceived发生

我正在为WindowsCE6开发一个程序,该程序由Visual Studio 2008解决方案中的两个项目组成,用VB.Net编写。以前,我为Windows桌面编写了一个类似的程序,因此我希望尽可能多地重用代码

通用结构是:第一个项目包含前端gui,第二个项目是用于串行通信的库。此库应可用于其他GUI,并且不得依赖于图形化内容,例如
控件

在第二个库项目中,我使用了一个
SerialPort
-实例,通过
SerialPort.DataReceived
事件处理数据的接收。由于
DataReceived
发生在第二个线程中,我在桌面变量中使用了
SynchronizationContext
Invoke
不依赖于图形内容。以下是一个简单的例子:

Public Class Comm Private dllContext As SynchronizationContext Private port as SerialPort Public Sub New() dllContext = SynchronizationContext.Current port = new SerialPort("COM1") End Sub Public Sub port_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles port.DataReceived Dim data(-1) as Byte ' ' Read Received Data into the data-Variable, yet. ' If (dllContext IsNot Nothing) then dllContext.Send(Sub() RaiseEvent DataReceived(Me, data), Nothing) Else RaiseEvent DataReceived(Me, data) End If End Sub End Class 公共类通信 作为同步上下文的专用dllContext 专用端口作为串行端口 公共分新() dllContext=SynchronizationContext.Current 端口=新串行端口(“COM1”) 端接头 公共子端口_DataReceived(ByVal发送方作为对象,ByVal e作为System.IO.Ports.SerialDataReceivedEventArgs)处理port.DataReceived Dim数据(-1)作为字节 ' '将接收到的数据读入数据变量,但。 ' 如果(dllContext不是空的),那么 dllContext.Send(Sub()RaiseEvent DataReceived(Me,data),Nothing) 其他的 已接收RaiseEvent数据(Me,数据) 如果结束 端接头 末级 将此代码移植到.Net CF时,没有可用的
SynchronizationContext
。我在网上搜索发现: 但是作者使用的是Control.Invoke,我不想使用它(在System.Windows.Forms中)

由于几天来我没有发现其他方法,我的问题是:如何解决这个问题

谢谢

克里斯托夫