2009-10-14 87 views
1

我们在Windows CE 6设备上使用C#和.NET Compact Framework 2.0。当我需要在服务器和设备之间传输数据时,我正在使用RasDial呼叫建立GPRS连接。C#:如何取消RasDial呼叫?

这一切都很好。但是,有时在没有信号的情况下,RasDial的呼叫将永远持续下去,只能通过热启动设备来停止。我们的客户希望我在显示的状态窗口中添加一个“取消”按钮,以允许用户取消拨号过程。

问题是:如何? RasDial是一个同步呼叫,我没有看到取消请求的方法。一种解决方案是在单独的线程中执行调用,并在用户按下“取消”按钮时放弃该线程,但这似乎不是一个很好的解决方案。

有什么想法?

编辑
我目前正试图将功能添加到一个C++库我已经添加到项目不管怎么说,这将允许我使用RasHangup取消拨号(进行异步调用RasDial)。

有关如何使用标准C#/ .NET Framework而不使用单独的C++ DLL或第三方库来完成此操作的任何想法?

EDIT 2
在.NET Compact Framework 2.0中刚刚发现MessageWindow类 - 我会尝试使用这个子类来接收状态信息。

编辑3
我已经制定了如何使用MessageWindow我的需要,我现在可以获取有关连接的进程异步通知。似乎我已经解决它自己:-D

回答

2

你可以看看OpenNETCF RAS library over on CodePlex。它完成了所有这些。

+0

不幸的是,我可能不使用第三方库,但我设法使用MessageWindow类来接收异步状态消息。 – 2009-10-15 09:21:12

+0

好吧,所以我称之为一个愚蠢的规则。如果来源是免费的,为什么你不能用它呢?为了让你浪费时间自己编写代码?除非你想成为RAS专家,否则这是零值。 – ctacke 2009-10-15 11:37:14

+0

正确 - 一个愚蠢的规则。但是,在我们的职业生涯中,我们并不是所有人都会遇到愚蠢;-)无论如何,我会接受你的anser,因为如果不是那个愚蠢的要求,我会遵循一个非常好的建议。 – 2009-10-16 08:07:50