.NETCF异步TCP套接字正常关闭问题

时间:2011-04-12 16:22:45

标签: c# compact-framework activesync asyncsocket

我有一个TCP客户端/服务器应用程序,可以通过ActiveSync连接与Windows CE设备进行通信。客户端和服务器都使用异步套接字(即Socket.Begin*Socket.End*函数)。当客户端和服务器都在我的桌面上运行时,所有功能都完全按预期运行,但是当客户端在通过ActiveSync连接的Windows CE设备上运行时,我总是在调用{{1}后在ReceiveCallback上获得SocketException (当设备启动断开连接时)。完整的例外是:

Socket.Shutdown

如果服务器(在桌面上运行)启动断开连接,一切似乎也能正常工作。我有一些关于如何避免这种情况的想法,包括禁止设备启动断开连接并在启动断开连接后忽略所有异常。但是,我想知道为什么会发生这种情况,以及是否有更好的方法来处理它。

Disconnect和ReceiveCallbacks(服务器和客户端上的操作相同)是:

System.Net.Sockets.SocketException: An error message cannot be displayed because an optional resource assembly containing it cannot be found
at System.Net.Sockets.Socket.ReceiveNoCheck()
at ReceiveAsyncRequest.doRequest()
at AsyncRequest.handleRequest()
at WorkerThread.doWork()
at WorkerThread.doWorkI()
at WorkItem.doWork()
at System.Threading.Timer.ring()

2 个答案:

答案 0 :(得分:0)

为了获得实际的异常,可以尝试找出它需要哪个库并进行部署?

答案 1 :(得分:0)

如果您的设备上无法显示消息,因为您的设备上未安装该消息。您必须安装netcf.messages.cab。你会在这里找到它:

C:\Program Files (x86)\Microsoft.NET\SDK\CompactFramework\v3.5\WindowsCE\Diagnostics

安装此CAB文件后,再次运行您的应用程序并发布您收到的新错误。