10.2.3 C#中的CheckForIllegalCrossThreadCalls属性
CheckForIllegalCrossThreadCalls是Control类的属性,该属性获取或设置一个值,该值指示是否捕获对错误线程的调用,这些调用在调试应用程序时访问控件的Handle属性。如果试图访问控件的方法或属性之一的线程不是创建该控件的线程,则通常会导致不可预知的结果。当程序中存在无效的线程试图对访问控件的Handle属性进行调用,将CheckForIllegalCrossThreadCalls设置为true可以更容易地查找并诊断此线程。
(1)新建一个项目,命名为“Ex10_02”,默认窗体为Form1。
(2)在Form1窗体中主要添加的控件见表10-3。
表10-3 主要添加的控件

(3)主要程序代码如下:
本例是利用8888端口进行局域网内部的点对点通信,只要确认对方IP就能相互发送信息。代码的添加主要分为以下几个步骤。
1)首先是对几个命名空间的引用,包括System.Net、System.Net.Sockets和System.Th reading,然后定义如下三个全局变量:(https://www.daowen.com)

其中,UdpClient是本例的核心成员,主要通过它的相关方法进行数据的收发。
2)本例使用8888端口进行通信,所以应该在当前窗体构造函数Form1()内用该端口实例化UdpClient。

CheckForIllegalCrossThreadCalls主要是解决线程间的控件操作问题,通过将其属性设置为fasle,可以禁用对操作控件的线程是否为创建该窗体的线程的检测,阻止该异常的发生。
3)单击“发送”按钮,添加如下代码:
