資源簡介
C#多線程編程實例 線程與窗體交互源碼.rar

代碼片段和文件信息
using?System;
using?System.Collections.Generic;
using?System.ComponentModel;
using?System.Data;
using?System.Drawing;
using?System.Text;
using?System.Windows.Forms;
//引用線程命名空間
using?System.Threading;
namespace?Thread_example
{
????public?partial?class?Form1?:?Form
????{
????????//聲明線程數組
????????Thread[]?workThreads?=?new?Thread[10];
????????public?Form1()
????????{
????????????InitializeComponent();
????????}
????????//此委托允許異步的調用為Listbox添加Item
????????delegate?void?AddItemCallback(string?text);
????????//這種方法演示如何在線程安全的模式下調用Windows窗體上的控件。
????????private?void?AddItem(string?text)
????????{
????????????if?(this.listBox1.InvokeRequired)
????????????{
????????????????AddItemCallback?d?=?new?AddItemCallback(AddItem);
????????????????this.Invoke(d?new?object[]?{?text?});
????????????}
????????????else
????????????{
????????????????this.listBox1.Items.Add(text);
????????????}
????????}
????????//數據采集方法
????????public?void?DataGet()
????????{
????????????while?(true)
????????????{
????????????????AddItem(“ok“);
????????????????Thread.Sleep(1000);
????????????}
????????????//如果此方法退出了,那么這個線程也就退出了
????????}
????????///?
????????///?啟動線程
????????///?
????????///?
????????///?
????????private?void?button1_Click(object?sender?EventArgs?e)
????????{
????????????//循環創建并啟動線程執行
????????????for?(int?i?=?0;?i?????????????{
????????????????if?(workThreads[i]?==?null)
????????????????{
????????????????????//如果線程不存在,則創建
????????????????????workThreads[i]?=?new?Thread(new?ThreadStart(DataGet));
????????????????????workThreads[i].Name?=?i.ToString();
????????????????????workThreads[i].Start();
????????????????}
????????????????else
????????????????{
????????????????????//已經存在,如果沒有運行,則啟動
????????????????????if?(workThreads[i].ThreadState?==?ThreadState.Aborted?||?workThreads[i].ThreadState?==?ThreadState.Stopped)
????????????????????{
????????????????????????workThreads[i]?=?new?Thread(new?ThreadStart(DataGet));
????????????????????????workThreads[i].Name?=?i.ToString();
????????????????????????workThreads[i].Start();
????????????????????}else{
????????????????????????workThreads[i].Start();
????????????????????}
????????????????}
????????????}
????????}
????????///?
????????///?停止線程
????????///?
????????///?
????????///?
????????private?void?button2_Click(object?sender?EventArgs?e)
????????{
????????????//循環停止線程執行
????????????for?(int?i?=?0;?i?????????????{
????????????????//如果線程存在,并且狀態不是停止也不是終止的,則終止該線程
????????????????if?(workThreads[i]?!=?null?&&?workThreads[i].ThreadState?!=?ThreadState.Stopped?&&?workThreads[i].ThreadState?!=?ThreadState.Aborted)
????????????????{
????????????????????workThreads[i].Abort();
????????????????}
????????????}
????????}
????}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????884??2014-07-10?13:28??Thread_example.sln
????..A..H.??????9728??2014-07-10?13:28??Thread_example.suo
?????文件??????11608??2014-07-10?14:27??Thread_example\bin\Debug\Thread_example.vshost.exe
?????文件????????490??2010-03-17?22:39??Thread_example\bin\Debug\Thread_example.vshost.exe.manifest
?????文件???????3316??2014-07-10?14:26??Thread_example\Form1.cs
?????文件???????3295??2014-07-10?14:02??Thread_example\Form1.Designer.cs
?????文件???????5817??2014-07-10?14:02??Thread_example\Form1.resx
?????文件???????5319??2014-07-10?14:26??Thread_example\obj\x86\Debug\DesignTimeResolveAssemblyReferencesInput.cache
?????文件????????475??2014-07-10?13:28??Thread_example\Program.cs
?????文件???????1378??2014-07-10?13:28??Thread_example\Properties\AssemblyInfo.cs
?????文件???????2879??2014-07-10?13:28??Thread_example\Properties\Resources.Designer.cs
?????文件???????5612??2014-07-10?13:28??Thread_example\Properties\Resources.resx
?????文件???????1100??2014-07-10?13:28??Thread_example\Properties\Settings.Designer.cs
?????文件????????249??2014-07-10?13:28??Thread_example\Properties\Settings.settings
?????文件???????3435??2014-07-10?13:31??Thread_example\Thread_example.csproj
?????目錄??????????0??2014-07-10?13:28??Thread_example\obj\x86\Debug\TempPE
?????目錄??????????0??2014-07-10?14:27??Thread_example\obj\x86\Debug
?????目錄??????????0??2014-07-10?13:31??Thread_example\bin\Debug
?????目錄??????????0??2014-07-10?13:28??Thread_example\obj\x86
?????目錄??????????0??2014-07-10?13:28??Thread_example\bin
?????目錄??????????0??2014-07-10?13:28??Thread_example\obj
?????目錄??????????0??2014-07-10?13:28??Thread_example\Properties
?????目錄??????????0??2014-07-10?13:29??Thread_example
?????文件??????10050??2019-07-20?20:24??新建?XLSX?工作表.xlsx
-----------?---------??----------?-----??----
????????????????65635????????????????????24
- 上一篇:oracle 圖書館系統
- 下一篇:C#操作數據庫增刪改查
評論
共有 條評論