none
VB2005 如何用 Thread 執行一個需要帶參數的副程式 RRS feed

  • 問題

  • 我有一個副程式(需要輸入參數), 想用 Thread 來執行, 但是它需要帶入參數, 請問要怎麼做呢??

     

    副程式 , 類型如下...

    private sub AAA(byval strBBB as string)

     

    end sub

    2007年12月27日 上午 02:50

解答

  • ...

    這是安裝在本機的線上手冊位置,你如果有安裝的話,IE 才會開得起來。

     

    你若沒在本機端安裝線上手冊,請使用網路版:

    http://msdn2.microsoft.com/zh-tw/library/system.threading.thread.start(VS.80).aspx

     

    2007年12月27日 上午 03:07
    版主
  • HI,

     

    您可以在檔案的最前面引入以下的名稱空間:

     

    Imports System.Threading

     

    在類別中宣告以下的變數:

     

    Dim t as Thread

     

    然後使用以下的程式碼建立執行緒:

     

    t=new Thread(new ParameterizedThreadStart(AddressOf AAA))

    t.Start()

     

    不過AAA必須宣告成以下的樣子:

     

    private sub AAA(byval strBBB as Object)

     

    end sub

     

    PS:您可以利用ThreadPool類別的QueueUserWorkItem方法執行上述的AAA方法, 或是利用BackgroundWorker類別執行上述的方法

     

    tihs

     

    2007年12月27日 上午 11:38
  •     1 using System;
        2 using System.ComponentModel;
        3 using System.Windows.Forms;
        4 
        5 namespace WindowsApplication1
        6 {
        7     public partial class Form1 : Form
        8     {
        9         private BackgroundWorker bw = new BackgroundWorker();
       10 
       11         public Form1()
       12         {
       13             InitializeComponent();
       14             bw.DoWork += bw_DoWork;
       15         }
       16 
       17         private void button1_Click(object sender, EventArgs e)
       18         {
       19             bw.RunWorkerAsync("hihi");
       20         }
       21 
       22         private void bw_DoWork(object sender, DoWorkEventArgs e)
       23         {
       24             AAA(e.Argument.ToString());
       25         }
       26 
       27         private void AAA(string strBBB)
       28         {
       29             MessageBox.Show(strBBB);
       30         }
       31     }
       32 }
    2007年12月27日 上午 11:55

所有回覆

  • 有好多種做法,你如何啟用你的副程式?

     

    例如 Thread.Start 的多載:

    ms-help://MS.MSDNQTR.v80.cht/MS.MSDN.v80/MS.NETDEVFX.v20.cht/cpref23/html/M_System_Threading_Thread_Start_1_b4c5a2da.htm

     

    你可以看看線上手冊這邊寫的範例。

     

    2007年12月27日 上午 02:56
    版主
  • 你好..

    你給我這個網址, 我打不開... 可以幫我做成超連結嗎? 謝謝..

    2007年12月27日 上午 03:02
  • ...

    這是安裝在本機的線上手冊位置,你如果有安裝的話,IE 才會開得起來。

     

    你若沒在本機端安裝線上手冊,請使用網路版:

    http://msdn2.microsoft.com/zh-tw/library/system.threading.thread.start(VS.80).aspx

     

    2007年12月27日 上午 03:07
    版主
  • HI,

     

    您可以在檔案的最前面引入以下的名稱空間:

     

    Imports System.Threading

     

    在類別中宣告以下的變數:

     

    Dim t as Thread

     

    然後使用以下的程式碼建立執行緒:

     

    t=new Thread(new ParameterizedThreadStart(AddressOf AAA))

    t.Start()

     

    不過AAA必須宣告成以下的樣子:

     

    private sub AAA(byval strBBB as Object)

     

    end sub

     

    PS:您可以利用ThreadPool類別的QueueUserWorkItem方法執行上述的AAA方法, 或是利用BackgroundWorker類別執行上述的方法

     

    tihs

     

    2007年12月27日 上午 11:38
  •     1 using System;
        2 using System.ComponentModel;
        3 using System.Windows.Forms;
        4 
        5 namespace WindowsApplication1
        6 {
        7     public partial class Form1 : Form
        8     {
        9         private BackgroundWorker bw = new BackgroundWorker();
       10 
       11         public Form1()
       12         {
       13             InitializeComponent();
       14             bw.DoWork += bw_DoWork;
       15         }
       16 
       17         private void button1_Click(object sender, EventArgs e)
       18         {
       19             bw.RunWorkerAsync("hihi");
       20         }
       21 
       22         private void bw_DoWork(object sender, DoWorkEventArgs e)
       23         {
       24             AAA(e.Argument.ToString());
       25         }
       26 
       27         private void AAA(string strBBB)
       28         {
       29             MessageBox.Show(strBBB);
       30         }
       31     }
       32 }
    2007年12月27日 上午 11:55