2013年6月7日

在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke

摘要: “在Window窗体程序开发的时候,如果使用多线程编程,在子线程中访问主线程窗体内的控件,就需要使用控件的Control.Invoke方法或者BeginInvoke方法。但是有时候因为Window执行速度太快,尤其是你写代码的时候在InitializeComponent();完成之前起了一个线程去执行某些操作,涉及到窗体控件的,当你在调用Control.Invoke的时候,就可能出现 “在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke”错误。解决的办法就是让线程等待,直到窗口句柄创建完毕: //防止在窗口句柄初始化之前就走到下面的代码 while (!this.I 阅读全文

posted @ 2013-06-07 12:55 流星落 阅读(660) 评论(0) 推荐(1) 编辑

2013年6月6日

C#关于AutoResetEvent的使用介绍

摘要: AutoResetEvent 允许线程通过发信号互相通信。通常,此通信涉及线程需要独占访问的资源。线程通过调用 AutoResetEvent 上的 WaitOne 来等待信号。如果 AutoResetEvent 处于非终止状态,则该线程阻塞,并等待当前控制资源的线程通过调用 Set 发出资源可用的信号。调用 Set 向 AutoResetEvent 发信号以释放等待线程。AutoResetEvent 将保持终止状态,直到一个正在等待的线程被释放,然后自动返回非终止状态。如果没有任何线程在等待,则状态将无限期地保持为终止状态。可以通过将一个布尔值传递给构造函数来控制 AutoResetEvent 阅读全文

posted @ 2013-06-06 14:15 流星落 阅读(603) 评论(0) 推荐(1) 编辑

2013年4月19日

C# UDP 网络聊天程序

摘要: 集自http://www.cnblogs.com/andrew-blog/archive/2011/12/03/CSharp_Socket_Udp.html学习了UDP协议的使用以及TCP协议的对比,各有各的优势!个人理解优势区别如下:1:UDP协议称为不可靠的传输协议,因为在从发送方到接收方的传递过程中出现的数据丢失,协议本身并不能做出任何检测或者提示。2:UDP速度比TCP快,因为UDP不需要先与对方建立连接,也不需要连接确认,因此速度要快的多。理解下使用情景:并不是说一个程序用UDP就用UDP 用TCP就用TCP,比如说QQ聊天,我们要开视频,语音,发送文件,文字。其中开视频,语音就可以 阅读全文

posted @ 2013-04-19 11:15 流星落 阅读(2452) 评论(0) 推荐(1) 编辑

2013年4月16日

Form.ShowDialog()返回值的问题???

摘要: 问题:DataSourceSet是一个Windows窗体,我要定义一个该窗体的类对象DataSourceSetDataSourceSetForm=newDataSourceSet();if(DataSourceSetForm.ShowDialog()==DialogResult.OK){.......}请问:DataSourceSetForm.ShowDialog()的返回值(DialogResult的枚举值),系统是根据什么判断窗体的返回值(DialogResult.OK,还是DialogResult.Cancel....)?请帮我详细解释一下,谢谢???解答:你可以在窗體關閉前設定Dial 阅读全文

posted @ 2013-04-16 10:15 流星落 阅读(1078) 评论(0) 推荐(0) 编辑

2013年4月15日

基于UDP、TCP协议的C#网络编程之二

摘要: 集自:http://blog.sina.com.cn/s/blog_4c459776010009c3.html第二截,讲讲基于TCP协议的网络编程,与UDP不同的是,基于TCP协议的编程的服务器端有一个监听对象:TcpListener,它负责监听来自客户端的消息并处理,并且必须在保持连接的情况下与客户端保持互动,下面举个例子,TCP不怎么复杂,只是综合要求较高,如果想编出个象样的东西,对多线程,事件委托等等都需要有较高的认识,当然,还要对协议本身有深刻的理解。咱水平不到,来个课堂实例。示例一:基于TCP协议的网络编程窗体:Form2做为本程序的服务器端,当按下Start后,启动服务,剩下的是一 阅读全文

posted @ 2013-04-15 11:47 流星落 阅读(257) 评论(0) 推荐(0) 编辑

基于UDP、TCP协议的C#网络编程之一

摘要: 集自http://blog.sina.com.cn/s/blog_4c459776010009bp.html写这篇之前,先简单介绍一下TCP、UDP协议,深的讲不出来,有不明白的请问我秘书Dawnh同学。 TCP(传输控制协议)是 TCP/IP 协议栈中的传输层协议,它通过序列确认以及包重发机制,提供可靠的数据流发送和到应用程序的虚拟连接服务。与IP协议相结合, TCP组成了因特网协议的核心。 UDP(用户数据报协议)是ISO参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。 UDP协议基本上是 IP 协议与上层协议的接口。UDP协议适用端口分辨运行在同一台设备上的多个应 阅读全文

posted @ 2013-04-15 11:41 流星落 阅读(310) 评论(0) 推荐(1) 编辑

2013年4月11日

教你如何在一个有500台PC以上的局域网配置IP、子网掩码

摘要: 集自http://net.zdnet.com.cn/network_security_zone/2008/1203/1264557.shtmlIP和子网掩码我们都知道,IP是由四段数字组成,在此,我们先来了解一下3类常用的IP A类IP段 0.0.0.0 到127.255.255.255 B类IP段 128.0.0.0 到191.255.255.255 C类IP段 192.0.0.0 到223.255.255.255 XP默认分配的子网掩码每段只有255或0 A类的默认子网掩码 255.0.0.0 一个子网最多可以容纳1677万多台电脑 B类的默认子网掩码 255.2... 阅读全文

posted @ 2013-04-11 22:26 流星落 阅读(2477) 评论(0) 推荐(0) 编辑

c# Invoke和BeginInvoke 区别

摘要: 转自http://www.cnblogs.com/c2303191/articles/826571.htmlControl.Invoke 方法 (Delegate) :在拥有此控件的基础窗口句柄的线程上执行指定的委托。Control.BeginInvoke 方法 (Delegate) :在创建控件的基础句柄所在线程上异步执行指定委托。(一)Control的Invoke和BeginInvoke我们要基于以下认识:(1)Control的Invoke和BeginInvoke与Delegate的Invoke和BeginInvoke是不同的。(2)Control的Invoke和BeginInvoke的参 阅读全文

posted @ 2013-04-11 13:54 流星落 阅读(301) 评论(0) 推荐(0) 编辑

2012年8月5日

C#使用BinaryWriter类写入二进制文件1

摘要: System.IO命名空间提供了BinaryReader类和BinaryWriter类,用来完成读写二进制数据的操作,但是这两个类本身并不执行流,而是提供其他对象流的包装。写入二进制文件:BinaryWriter类用于从C#变量向指定流写入二进制数据,该类可以把C#数据类型转换成可以写到底层流的一系列字节。BinaryWriter类常用方法:Write方法:将值写入流,有很多重载版本,适用于不同的数据类型。Flush方法:清除缓存区。Close方法:关闭数据流。 下面介绍的C#本地读写二进制文件,二进制文件指保存在物理磁盘的一个文件。第一步:读写文件转成流对象。其实就是读写文件流(FileSt 阅读全文

posted @ 2012-08-05 15:21 流星落 阅读(4187) 评论(0) 推荐(0) 编辑

2012年8月1日

TreeView控件应用--访问文件或文件夹(一)

摘要: C#用TreeView访问文件或文件夹,通过递归,展开所有文件夹(类似资源管理器的树形窗体)首先,算法是用递归算法,不断的递归文件。以此来遍历整个电脑的磁盘内容,过程也很简单。这种算法的时间复杂度太大。以至于窗体打开较慢,效率不高。View Code using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Form 阅读全文

posted @ 2012-08-01 15:27 流星落 阅读(1487) 评论(0) 推荐(0) 编辑

导航