浅析.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类的一个实例以类型安全的方法来调用它要调用的线程方法。
...
阅读全文…
开始新线程
在.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"); //也可以
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)
...
阅读全文…
//下面这句放在程序前面初始化
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;
}
否则,你可以用线程的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.
...
阅读全文…
{
// 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.
...
阅读全文…
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);
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表用法.
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";
string str1 = "abc\n"; // 这里\n当然默认转为换行符
string str2 = @"abc\n" // 这里\n不自动转为换行符号,相当于 str2 = "abc\\n"
ps:原来vs.net默认就支持单字符串分行写,不过ide不支持这种语法的排版.
string str1 = "aaaa
bbbb
ccccc";