![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C#
文章平均质量分 64
普通网友
这个作者很懒,什么都没留下…
展开
-
c#线程池详解
转自:http://blog.sina.com.cn/s/blog_494305f30100ryw7.html在这里你可以学到Microsoft研究CLR实现线程池的原理机制,从而更灵活的处理CLR在实际代码应中线程池的问题,下面我们来看看吧。CLR教程之线程池的产生当 CLR 初始化时,其线程池中不含有线程。当应用程序要创建线程来执行任务时,该应用程序应请求线程池线程来执行任务。线程转载 2012-04-16 09:06:39 · 3659 阅读 · 0 评论 -
BackgroundWorker 类
转自:http://blog.csdn.net/zhongjiekangping/article/details/4563357(代码做了修改,原文中代码冗长)特点:BackgroundWorker 类允许在单独的专用线程上运行操作。用途:耗时的操作(如下载和数据库事务)在长时间运行时可能会导致用户界面 (UI) 似乎处于停止响应状态。如果您需要能进行响应的用户界面,而且面临与这类转载 2012-02-24 15:47:51 · 1128 阅读 · 0 评论 -
C# UI积累
做个积累,MFC原先也有,结果丢了。 (1)添加鼠标右键弹出菜单1>在“菜单和工具栏”中选择"ContextMenuStrip"(比较奇怪,为什么不直接叫ContextMenu就好,还加个条?)注意:"ContextMenuStrip"是一个组件,刚开始并不显示2>在需要显示右键弹出菜单的容器与创建的"ContextMenuStrip"进行绑定一般的容器都有属性"Context原创 2011-11-25 13:43:34 · 794 阅读 · 0 评论 -
在C#中调用windows API函数
转自:http://www.91tech.net/Article/SoftTech/csharp/200410/77.html对于windows 系统API函数的调用在程序设计中有时是必不可少的,各种编程语言都规范了调用的方法和接口,在C#语言中的调用方法如下(以下编程环境为Visual Studio .NET):(1) 在工程项目中添加一个类新项,打开这个类文件,在文件头部加入对以下命名转载 2012-02-21 13:25:57 · 859 阅读 · 0 评论 -
C# 静态类(static class)
类可以声明为 static 的,以指示它仅包含静态成员。静态类在加载包含该类的程序或命名空间时,由 .NET Framework 公共语言运行库 (CLR;特指:C#语言) 自动加载。使用静态类来包含不与特定对象关联的方法,具有通用性注意事项:(1) 不能使用 new 关键字创建静态类的实例;(2) 仅包含静态成员;(3) 不能被实例化;(4) 密封的,不能被继承;原创 2012-02-21 09:29:52 · 22412 阅读 · 2 评论 -
C# 对 Windows 窗体控件进行线程安全调用
参考自:http://msdn.microsoft.com/ZH-CN/library/SYSTEM.WINDOWS.FORMS.CONTROL.INVOKE.aspx如果使用多线程来提高 Windows 窗体应用程序的性能,则必须确保以线程安全方式调用控件。访问 Windows 窗体控件本质上不是线程安全的。如果有两个或多个线程操作某一控件的状态,则可能会迫使该控件进入一种不一致的状态。原创 2012-02-28 16:54:26 · 4053 阅读 · 0 评论 -
C# ColorDialog的使用
本文为巧巧读书网Douces原创,原文是关于VB上的,由于C#跟VB有很多相似,所以进行了部分修改。ColorDialog 组件是.net预设的有模式对话框,其功能是弹出系统自带的调色板,让用户选择颜色或者自定义颜色。一、ColorDialog 组件的主要属性1、AllowFullOpen 属性:指示用户是否可以使用该对话框定义自定义颜色。如果用户可定义自定义颜色,则为 true;原创 2012-02-20 14:12:02 · 15713 阅读 · 1 评论 -
C# 在系统通知区域中显示图标
在C#中,有相应的NotifyIcon组件,用以控制程序在系统通知区域中的显示使用命名空间:System.Windows.Forms和System.Drawing通过设置该类组件对象的属性(最关键的应该是Icon和Visible属性),以在系统通知区域中显示对应的Icon图标属性说明:Icon:指定出现在通知区域中的图标(System.Drawing.Icon型),包括文件名称原创 2012-02-16 10:10:58 · 3401 阅读 · 0 评论 -
无法将顶级控件添加到控件
使用环境:VS2010,C#出错场景:收到一个新的连接时,为其弹出一个新的对话框。在设置对话框的父窗口时出错!错误代码:Form2 newForm=new Form2();newFormParent = this;newForm.Show();错误提示:未处理的ArgumentException:无法将顶级控件添加到控件。错误原因:Form默认为顶级原创 2012-02-29 13:17:47 · 9312 阅读 · 3 评论 -
C# 在子线程中创建不会阻塞执行的窗口
可以参考”C# 对 Windows 窗体控件进行线程安全调用“一文来看。在做网络连接程序的时候碰到一个问题:每当连接到来时,都创建一个新的接收线程,而该接收线程在接收到消息时,可以创建一个新的对话窗口,而该窗口不能阻塞该接收线程的下一轮消息的接收,而且该接收线程还要把接收到的消息显示在该窗口上Form.ShowDialog();方法弹出模态对话框,而模态对话框会阻塞后面代码的执行,导致原创 2012-02-24 14:04:56 · 11738 阅读 · 2 评论 -
C# 返回结构体为空的解决办法
适用情况:(1) 函数的返回类型是一个结构体(如StructA),而这个返回值有可能为空。此时不能直接返回null或者0,否则编译器会报错:无法将null或者0隐式转成结构体StructA,因为它不是一种可以为null值的类型。public struct StructA{}public StructA GetStruct(){ if() { r原创 2012-02-20 10:03:59 · 13319 阅读 · 1 评论 -
委托和方法的异步调用
转自:http://hi.baidu.com/smithallen/blog/item/43c7b71abf2ce4f1af51330b.html(百度文库)通常情况下,如果需要异步执行一个耗时的操作,我们会新起一个线程,然后让这个线程去执行代码。但是对于每一个异步调用都通过创建线程来进行操作显然会对性能产生一定的影响,同时操作也相对繁琐一些。.Net中可以通过委托进行方法的异步调用,就是转载 2012-02-27 11:55:05 · 1812 阅读 · 0 评论 -
C# 获取主机对应的IP地址和主机名
一、Dns类介绍:命名空间:using System.Net;主要功能:提供简单的域名解析功能主要方法:(1) GetHostEntry() :将主机名或 IP 地址解析为 IPHostEntry 实例;(2) BeginGetHostEntry(String, AsyncCallback, Object):将主机名或 IP 地址异步解析为 IPHostEntry 实例;原创 2012-02-27 14:39:08 · 8548 阅读 · 1 评论 -
显示非模态窗口
非模态地显示窗口或窗体其实并不是非常简单。面临的挑战是键盘输入由源应用程序接收,并且需要传递给合适的窗口。为了让这种方法在WPF和Windows窗体内容之间可行,需要通过一种方法沿着正确的窗口或窗体转发这些消息。如果希望从Windows窗体应用程序内部非模态地显示一个WPF窗口,必须使用静态的ElementHost.EnableModelessKeyboardInterop( )方法。补充原创 2012-02-28 10:14:30 · 3056 阅读 · 0 评论 -
C# 在任务栏中显示应用程序图标
在System.Windows.Form中有属性:ShowInTaskBar(bool类型)通过设置Form的ShowInTaskBar属性,可设置窗体是否在任务栏中进行显示或隐藏form1.ShowInTaskBar=true; 则在任务栏中进行显示;form1.ShowInTaskBar=false; 则在任务栏中不显示;注意:默认情况下,该属性的取值为true,即在任务栏原创 2012-02-16 09:04:16 · 6430 阅读 · 0 评论 -
C# 子线程与前台UI界面的交互
转自:如何在子线程中操作窗体上的控件下面是转载的一篇文章。但是,自己尝试的时候,发现直接调用invokeFun()函数也是可行的。作者的文章是06年的,可能比较早,此间C#已经经过一些版本的更新。一般来说,直接在子线程中对窗体上的控件操作是会出现异常,这是由于子线程和运行窗体的线程是不同的空间,因此想要在子线程来操作窗体上的控件,是不可能简单的通过控件对象名来操作,但不是说不能进行操作转载 2012-02-24 11:17:10 · 2365 阅读 · 0 评论 -
c#获取系统时间的方法
话说,在C#中获取时间还真是简单呀...使用DateTime结构(struct)类型就可以直接搞定所在命名空间:using system;使用DateTime结构的静态属性Now可以获得本地时间,而不用像C++中获取国际时间,再转换成本地时间那么麻烦;静态属性Today可以获取当前日期;注意事项:DateTime是一个Struct,而不是一个类,没有构造函数。而是类似于静态原创 2011-12-09 16:10:16 · 829 阅读 · 0 评论 -
C# int和byte的相互转换
转自:http://blog.csdn.net/Enthusiasm/article/details/3464542下面介绍三种方法来进行转换。(1) 在.NET Framework类库的System名字空间中有个叫做BitConverter的类,它是专门用来进行这种转换的。主要方法:1> GetBytes()方法 可以将大多数的简单类型转化为byte[];转载 2012-03-01 16:24:41 · 11346 阅读 · 0 评论 -
C# 文件夹以及文件的创建和使用
在C#中,关于目录对应的类有:DirectoryInfo,以及Directory。其中Directory类只提供静态方法,不能实例化。关于文件对应的类有:FileStream,File,FileInfo这里只说明两个简单的应用:(1) 在当前目录下创建文件其实方法很简单,只要用 当前目录名+"\"+文件名 即可获得文件的路径名代码如下://获得当前目录DirectoryI原创 2011-11-28 09:46:39 · 944 阅读 · 0 评论 -
OpenFileDialog类
转自:http://blog.sina.com.cn/s/blog_4e6dffee0100hid1.html在工具箱中,OpenFileDialog是一个组件,可以拖到Form上一、主要属性和事件1、 OpenFileDialog控件有以下基本属性InitialDirectory对话框的初始目录Filter要在对转载 2012-02-29 15:21:17 · 3475 阅读 · 0 评论 -
C# 中的编码转换实现
C#提供了封装的类,可以直接用于编码转换例如:ASCIIEncoding,UnicodeEncoding,Encoding等类但是在进行编码转换时,需要以byte[] 作为中介进行转换.Net平台默认使用UnicodeEncoding.Unicode(Encoding类)作为编码方式;示例代码:Encoding destEncoding = UnicodeEncoding.UT原创 2012-04-09 09:04:04 · 1496 阅读 · 0 评论 -
窗口未显示时,操作窗口的注意事项
做的时候碰到点问题,随便总结一下主要碰到的情况为:需要隐藏一个窗口,使之未显示使用的代码如下:public void hideForm(){ this.Show(); this.ShowInTaskbar = false; this.WindowState = FormWindowState.Minimized;}即,已经调用Show()原创 2012-03-21 14:10:27 · 749 阅读 · 0 评论 -
C#端和C++端套接字通信中的几个问题
(1) 从字符串转为固定大小的字符数组如:定义固定大小的结构体:(使用命名空间:using System.Runtime.InteropServices;) [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] struct OnlineUsrInfo { [Marsh原创 2011-12-19 22:59:47 · 1346 阅读 · 1 评论 -
字段定义语法错误
使用环境:VS2010、Access2007、C#出错场景:在代码中,动态创建一个表:bookInfo使用代码如下:private OleDbCommand m_Cmd;m_Cmd.CommandText = "create table bookInfo (bookID int not null primary key, bookType char(16), bBooked原创 2012-03-20 14:16:36 · 5770 阅读 · 1 评论 -
auto_increment引起的“CREATE TABLE 语句中的语法错误”
使用环境:VS2010、C#、Access2007出错场景:用SQL语句来动态创建一个表,其中想定义一个字段为主键,并且自动增加使用代码如下:private OleDbCommand m_Cmd; m_Cmd.CommandText = "create table bookInfo (bookID int not null auto_increment primary ke原创 2012-03-20 15:40:02 · 15216 阅读 · 0 评论 -
SplitContainer的使用
作用:(Splitter的简化)使用 SplitContainer 控件可分隔容器(如 Form)的显示区域,并使用户可以调整已添加到 SplitContainer 面板中的控件的大小。当用户将鼠标指针移到拆分器上时,光标将发生变化,以指示可以调整 SplitContainer 控件内部的控件的大小。SplitContainer 也使设计时的控件放置更容易。例如,若要创建一个与 Win原创 2012-03-15 14:42:36 · 13121 阅读 · 0 评论 -
使用SplitContainer来实现隐藏窗口的部分内容
有两种方法:(1) Splitter:比较老的方法(2) SplitContainer:比较新的方法最终界面如下:方法一:使用Splitter实现(1) 在窗口中添加一个Panel控件,即Panel1将其Dock属性设为Right,这样Panel1就停靠在了窗口最右侧;(2) 在窗口中添加一个Splitter控件,即Splitter1将其Dock属性设为Ri原创 2012-03-15 15:39:18 · 9927 阅读 · 1 评论 -
Splitter 控件的使用
参考至:http://hi.baidu.com/sddyszb/blog/item/4a4a210b591b312e6b60fbbf.html注意:Splitter 已被 SplitContainer 取代,而且SplitContainer的使用更为方便。概念解释:可调整的控件:可以被Splitter控件调整的控件。两者有相同的Dock属性,而且可调整控件位于Splitter控件在原创 2012-03-15 09:20:47 · 8713 阅读 · 0 评论 -
Socket.Select()函数使用不当引发的问题(关于套接字在线程间传递是否可行的验证)
使用环境:VS2010 C#做东西的时候碰到一个问题:在后台中,创建了一个监听线程,用来监听是否有连接到监听地址的请求,如果有,则加入监听套接字集中;(这样的话,一个线程就可以接收N个套接字的信息)创建了一个接收线程,对监听套接字集中的套接字进行消息接收,并将该消息显示出来;其中,监听套接字集中有与服务器连接的套接字srvCommSock出错状况:类似下图所示即原创 2012-03-13 14:18:29 · 2269 阅读 · 0 评论 -
C# Listbox的使用
转自:http://blog.csdn.net/xujuntao0000/article/details/4711574ListBox英文意思为列表框,可以说是ListView的简化版本,简化名为”LBS",ListBox窗口用来列出一系列的文本,每条文本占一行,用户可以从中选择一项或多项。当项总数超过可以显示的项数时,则会自动向ListBox控件添加滚动条。C#中ListBox控件的用法转载 2012-03-12 14:05:24 · 12129 阅读 · 0 评论 -
C# 关于目录的操作
转自:http://www.cnblogs.com/JoshuaDreaming/archive/2010/11/25/1887996.html获取当前目录的几种方法:(1) 获取和设置当前目录(即该进程从中启动)的完全限定路径(绝对路径)-------该方法最简单且可靠string str = System.Environment.CurrentDirectory;result: X转载 2012-03-07 15:12:44 · 879 阅读 · 0 评论 -
偏移量和长度超出数组的界限,或者计数大于从索引到源集合结尾处
错误场景:在使用FileStream对象打开一个文件,想读到缓存中。由于缓存大小为1KB,所以需要分次读入。但在使用FIleStream.Read()方法时,错误代码:byte[] sendBuf=new byte[m_nBlockSize];int nRead=readFile.Read(sendBuf, nOffset, m_nBlockSize);当nOffset=1时,总是原创 2012-03-02 16:48:14 · 13259 阅读 · 3 评论 -
在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式,请确保您的Main函数带有STAThreadAttribute标记。
参考自:http://www.cnblogs.com/winzheng/archive/2008/12/02/1345656.html出错环境:多线程接收文件的时候,需要打开一个SaveFileDialog对象,并调用ShowDialog()方法出错代码:void threadProc(){ ... SaveFileDialog saveFileDlg = n原创 2012-03-06 13:44:51 · 19089 阅读 · 0 评论 -
XmlDocument.Save()使用错误导致的文件丢失问题
出错环境:在xml文档中写入一些内容。整个流程是:首先检查xml文件是否在当前路径下,如果存在,则用xmlDocument.Load()进行加载;如果不存在则创建xml文件,并用xmlDocument.Save(string)进行保存出错代码如下: //xml文件名 m_xmlFileName = "fileRecvRecord.x原创 2012-03-07 15:09:16 · 5119 阅读 · 0 评论 -
C# XML文件的一些操作(XmlDocument、XmlElement、XmlNode)
C#操作xml主要有这么几个对象:XmlDocument、XmlElement、XmlNode命名空间:using System.Xml;知识补充:XmlNode和XmlElement的区别:1、Element是一个小范围的定义,必须含有完整信息的节点才能叫做元素。2、Node是基本对象,Attribute、Element、Text等都是Node的子对象。一个元素一定是原创 2012-03-07 09:15:08 · 46897 阅读 · 4 评论 -
C# winform对话框用法大全
转自:http://blog.csdn.net/rxzgh/article/details/2988483对话框中我们常用了以下几种:1、文件对话框(FileDialog) 它又常用到两个: 打开文件对话框(OpenFileDialog) 保存文件对话(SaveFileDialog)2、字体对话框(FontDialog)3、颜色对话框(ColorDialog)4转载 2012-03-06 13:08:55 · 1497 阅读 · 0 评论 -
Socket.Connected不能在调试时作为套接字是否连接的判断依据
以下内容摘自微软的页面:http://technet.microsoft.com/zh-cn/magazine/system.net.sockets.socket.connected(VS.90).aspx Connected 属性获取截止到最后的 I/O 操作时 Socket 的连接状态。当它返回 false 时,表明 Socket要么从未连接,要么已断开连接。Connected 属原创 2012-02-23 10:12:31 · 6805 阅读 · 0 评论 -
C# 窗口事件参数
C#中,一般的窗口事件参数为:(object sender, KeyPressEventArgs e)其中sender是指谁触发的事件;e则指出发送时候附带了什么信息不同的事件,e中所含的信息会不同;例如键盘敲击KeyPress事件,则包含键位信息;而在鼠标事件中,则包含左右键、点击位置等信息原创 2012-02-21 14:32:01 · 752 阅读 · 0 评论 -
C#端和C++端套接字通信中遇到的编码问题
环境:Windows, VS2010注意事项:Windows下的wchar_t与Linux下的wchar_t不同(在Windows下占2字节;而在Linux下则占4字节)正题:由于C#端和C++端的编码方式不同,因此在通过套接字编程时,会有一些问题C#使用Unicode码,一个char占两个byte;而C++使用ANSI码,一个char占用一个byte所以,为了统一两者之间的不原创 2011-12-13 09:24:54 · 2085 阅读 · 0 评论 -
IntPtr简介
转自:http://apps.hi.baidu.com/share/detail/33637951IntPtr用于表示指针或句柄的平台特定类型,此类型对多线程操作是安全的。C#中的IntPtr类型称为“平台特定的整数类型”,它们用于本机资源,如窗口句柄。资源的大小取决于使用的硬件和操作系统,但其大小总是足以包含系统的指针(因此也可以包含资源的名称)。 所以,在调用的API函数中一定有类似窗转载 2011-11-29 09:05:27 · 1458 阅读 · 0 评论