Tentang parameter thread (2.0), "nilai kembalian", dan suspensi thread
1. Parameter benang:
Terkadang Anda ingin meneruskan beberapa informasi ke thread tambahan. Di sini Anda perlu menggunakan
contoh delegasi ParameterizedThreadStart:
private void btRunThread_Click(
pengirim objek, EventArgs e)
{
Thread t = new Thread(new ParameterizedThreadStart(this.ThreadRun));
(100)
;
private void ThreadRun(objek o)
{
this.lbCompleted.Invoke((MethodInvoker)delegate { this.lbCompleted.Text = System.Convert.ToString(o); })
;
2. Fungsi serupa secara kasar dapat dicapai melalui proxy. Contoh:
class Program
{
static void Main(string[] args)
{
ThreadClass tc = new ThreadClass(new MyDlg(DlgMethod))
; ThreadRun ));
Console.WriteLine("thread kedua dimulai")
;
thread.Read
();
Console.WriteLine("thread kedua selesai")
;
private static void DlgMethod(int i)
{
Console.WriteLine("Hasil Thread Kedua:{0}", i
)
;
delegasi publik void MyDlg(int i);
kelas ThreadClass
{
pribadi MyDlg myDlg;
Kelas Utas publik(Dlg Saya pDlg)
{
ini.Dlg Saya = pDlg
}
public void ThreadRun()
{
int total = 0;
untuk (int i = 0; i < 100; i++)
{
total += i
}
jika
(Dlg saya!= null)
{
Dlg saya(total
)
;
3. Penangguhan thread:
(1) Metode .join
Catatan MSDN: Saat terus menjalankan pemrosesan pompa pesan COM dan SendMessage standar, thread pemanggil diblokir hingga thread berakhir.
Saya bingung dan mencobanya sendiri. Tampaknya setelah thread memanggil metode join, thread tersebut mengambil seluruh waktu CPU hingga tugas thread selesai. Tidak tahu apakah ini masalahnya?
(2). Metode abort
segera mengakhiri thread
(3). Contoh mendefinisikan identifier
:
class Program
{
private static bool stop;
static void Main(string[] args)
{
stop = false;
Thread t = Thread baru(ThreadStart(ThreadRun));
t.Start
()
;
Konsol.Baca();
}
static void ThreadRun()
{
while (!stop)
{
Console.WriteLine("
Lakukan Pekerjaan..."
)
;
http://www.cnblogs.com/KissKnife/archive/2006/10/03/520463.html