浏览模式: 普通 | 列表
5月, 2006 | < | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | >
暂停和继续线程


tianyang : 可怜啊,这么常用的函数不被支持了,还好2005提供了替代品.

原问: http://msdn2.microsoft.com/zh-cn/library/tttdef8x(VS.80).aspx


同步线程活动的最常用方法是锁定和释放线程,或者锁定对象或代码区域。有关这些锁定和阻止机制的更多信息,请参见同步基元概述。

还可以让线程将自身置于休眠状态。当线程被阻止或休眠时,可以使用 ThreadInterruptedException 使它们摆脱等待状态。

Thread.Sleep 方法
调用 System.Threading.Thread.Sleep ...

阅读全文…

浅析.Net下的多线程编程

[ 2006-05-10 15:50:14 | 作者: admin ]
多线程是许多操作系统所具有的特性,它能大大提高程序的运行效率,所以多线程编程技术为编程者广泛关注。目前微软的.Net战略正进一步推进,各种相关的技术正为广大编程者所接受,同样在.Net中多线程编程技术具有相当重要的地位。本文我就向大家介绍在.Net下进行多线程编程的基本方法和步骤。


开始新线程


在.Net下创建一个新线程是非常容易的,你可以通过以下的语句来开始一个新的线程:


Thread thread = new Thread (new ThreadStart (ThreadFunc));

thread.Start ();


第一条语句创建一个新的Thread对象,并指明了一个该线程的方法。当新的线程开始时,该方法也就被调用执行了。该线程对象通过一个System..Threading.ThreadStart类的一个实例以类型安全的方法来调用它要调用的线程方法。
...

阅读全文…

C#正则表达式

[ 2006-05-10 11:14:06 | 作者: admin ]
到目前为止,许多的编程语言和工具都包含对正则表达式的支持,当然.NET也不例外,.NET基础类库中包含有一个名称空间和一系列可以充分发挥规则表达式威力的类。
               正则表达式的知识可能是不少编程人员最烦恼的事儿了。如果你还没有规则表达式方面的知识的话,建议从正则表达式的基础知识入手。前参见 正则表达式基础知识。

               下面就来研究C#中的正则表达式,C#中的正则表达式包含在.NET基础雷库的一个名称空间下,这个名称空间就是System.Text.RegularExpressions。该名称空间包括8个类,1个枚举,1个委托。他们分别是:
                    Capture: 包含一次匹配的结果;
                    CaptureCollection: Capture的序列;
...

阅读全文…

半小时教你学会正则表达式[推荐]

[ 2006-05-10 09:55:01 | 作者: admin ]
tianyang: 正则这个东西是看了忘记,再看再忘记,所以一定要有一个迅速可以温习巩固的文章,这篇不错.

想必很多人都对正则表达式都头疼.今天,我以我的认识,加上网上一些文章,希望用常人都可以理解的表达方式.来和大家分享学习经验.

  开篇,还是得说说 ^ 和 $ 他们是分别用来匹配字符串的开始和结束,以下分别举例说明

  "^The": 开头一定要有"The"字符串;
  "of despair$": 结尾一定要有"of despair" 的字符串;

  那么,
  "^abc$": 就是要求以abc开头和以abc结尾的字符串,实际上是只有abc匹配
  "notice": 匹配包含notice的字符串

  你可以看见如果你没有用我们提到的两个字符(最后一个例子),就是说 模式(正则表达式) 可以出现在被检验字符串的任何地方,你没有把他锁定到两边
...

阅读全文…

LinkLabel 的使用,打开链接

[ 2006-05-10 08:39:29 | 作者: admin ]
System.Diagnostics.Process.Start("IExplore.exe", "http://www.163.com");//打开链接

System.Diagnostics.Process.Start("http://www.163.com"); //也可以

ListView的按列排序类实现

[ 2006-05-09 21:32:23 | 作者: admin ]
tianyang:测试发现,对于空白列的排序还是会报错,呵呵,try{}catch{}下好象结果就不准确了.


//下面这句放在程序前面初始化
private int sortColumn = -1;


//列点击事件
  private void listView1_ColumnClick(object sender, System.Windows.Forms.ColumnClickEventArgs e)
    {
      if(this.listView1.SelectedItems.Count!=0)
        this.listView1.SelectedItems.Clear();
      if (e.Column != sortColumn)
...

阅读全文…

多重大规模循环的结束方法

[ 2006-05-09 18:03:11 | 作者: admin ]
如果想安全结束的话,设置停止标签,然后join线程结束;
否则,你可以用线程的abort或者Application.ExitThread之类的来强行关闭线程。
建议使用BackgroundWorker + WaitDialog实现!

如果在循环中确定窗体不会假死,就使用:

bool StopFlag = false; //在循环外设置一个停止标签

for(int i=0;i<1000;i++)
{
    if(StopFlag == true)break; //最好定义在顶级循环中允许停止,否则可能出现运算错误
    for(int j=0;j<10;j++)
    {
      //....
    }
}

btnStop_Click(...) //按钮事件
{
    this.StopFlag = true;
    this.btnStop.Enabled = false;
}

OpenFileDialog

[ 2006-05-09 12:30:37 | 作者: admin ]
private void button1_Click(object sender, System.EventArgs e)
{
      // Displays an OpenFileDialog so the user can select a Cursor.
      OpenFileDialog openFileDialog1 = new OpenFileDialog();

      openFileDialog1.Filter = "Cursor Files|*.cur";
      //openFileDialog1.Filter = "txt files (*.txt)|*.txt";

      openFileDialog1.Title = "Select a Cursor File";

      // Show the Dialog.
...

阅读全文…