摘要:
最好在窗口Show()出来后在用Invalidate();来刷新界面,不然可能导致Invalidate();无效 阅读全文
摘要:
VS2010安装光盘中其实配上了MSDN文档。只需使用Manage Help Settings程序找到安装光盘的ProductDocumentation文件夹下的HelpContentSetup.msha文件,安装即可。 阅读全文
摘要:
backgroundworker传递参数,backgroundworker实现进度条显示实例 backgroundworker传递参数,backgroundworker实现进度条显示实例附一个简单的刷网页流量的小工具代码1. 从工具栏拖一个BackgroundWorker控件,设置其属性WorkerReportsProgress为true2. 要让worker开始工作,执行如下代码: mBackgroundWorker.RunWorkerAsync(arg); 这里有重写,如果不需要传递参数直接mBackgroundWorker.RunWorkerAsync();3. 编辑DoWork事件代码 阅读全文
摘要:
坐标轴变换 在winform中的坐标轴和我们平时接触的平面直角坐标轴不同,winform中的坐标轴方向完全相反:窗体的左上角为原点(0,0),水平向左则X增大,垂直下向则Y增大 阅读全文
摘要:
http://msdn.microsoft.com/zh-cn/library/system.windows.forms.listview.virtualmode.aspx 阅读全文
摘要:
C#语言有很多值得学习的地方,这里我们主要介绍C# ThreadPool类,包括介绍ThreadPool.QueueUserWorkItem()方法等方面。 在多线程的程序中,经常会出现两种情况: 一种情况: 应用程序中,线程把大部分的时间花费在等待状态,等待某个事件发生,然后才能给予响应,这一般使用ThreadPool(线程池)来解决; 另一种情况:线程平时都处于休眠状态,只是周期性地被唤醒,这一般使用Timer(定时器)来解决; C# ThreadPool类提供一个由系统维护的线程池(可以看作一个线程的容器),该容器需要 Windows 2000 以上系统支持,因为其中某些方法调用了只有高 阅读全文
摘要:
Interlocked.Increment 方法:让++成为原子操作;Interlocked.Decrement 方法让--成为原子操作。什么叫原子操作呢。就是不会被别人打断,因为C#中的一个语句,编译成机器代码后会变成多个语句。在多线程环境中,线程切换有可能会发生在这多个语句中间。使用Interlocked.Increment,Interlocked.Decrement 可以避免被打断,保证线程安全。使用Interlocked.Increment 方法和Interlocked.Decrement 方法MSND例子:using System;using System.Threading;cla 阅读全文
摘要:
指在一线程里面调用另一线程join方法时,表示将本线程阻塞直至另一线程终止时再执行例子如下:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;namespace ConsoleApplication7{ class Program { static void Main(string[] args) { Thread x = new Thread(new ThreadStart(f1)); x.Start(); Console.Write 阅读全文
摘要:
1、Font2、Bitmap3、Graphics4、Pen 阅读全文
摘要:
在C#中ParameterizedThreadStart和ThreadStart区别不需要传递参数,也不需要返回参数 我们知道启动一个线程最直观的办法是使用Thread类,具体步骤如下:ThreadStart threadStart=new ThreadStart(Calculate);Thread thread=new Thread(threadStart); thread.Start();public void Calculate() { double Diameter=0.5; Console.Write("The Area Of Circle with a Diameter of 阅读全文