浏览模式: 普通 | 列表

浅析.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类的一个实例以类型安全的方法来调用它要调用的线程方法。
...

阅读全文…

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.
...

阅读全文…

ListView

[ 2006-05-09 11:28:07 | 作者: admin ]
listView1.View = View.Details ;
listView1.Columns.Add("第一列", 50, HorizontalAlignment.Left);

listView1.Columns.Add("第二列", 50, HorizontalAlignment.Left);

ListViewItem item = new ListViewItem("1");
item.SubItems.Add("2");
listView1.Items.Add(item);

原创日志 c#关于名值对的实现

[ 2006-05-08 22:01:31 | 作者: admin ]
总是忘记这个东西,以前用过,后来居然就忘记了

System.Collections.Specialized.NameValueCollection nvArticleInfo = new System.Collections.Specialized.NameValueCollection();

nvArticleInfo["title"] = myDataReader["title"].ToString();
nvArticleInfo["addtime"] = myDataReader["addtime"].ToString();
nvArticleInfo["hits"] = myDataReader["hits"].ToString();

今天翻到以前的代码,稍微记一下,基本就是hash表用法.

原创日志 c#中强制不转义字符@

[ 2006-04-30 23:14:50 | 作者: admin ]
@在c#中为强制不转义 的符号,在里面的转义字符无效
string str1 = "abc\n"; // 这里\n当然默认转为换行符
string str2 = @"abc\n" // 这里\n不自动转为换行符号,相当于 str2 = "abc\\n"

ps:原来vs.net默认就支持单字符串分行写,不过ide不支持这种语法的排版.
string str1 = "aaaa
                    bbbb
                    ccccc";