2015-02-05 46 views
-2

我想回到一類爲多線程的具體運行的線程...從x線程返回一個類c#?

例如:

int i = 0; 
private class Cars(){ 
    private string Brand { get; set;} 
    private string Name {get; set} 
} 

private void StartThread(){ 
    for(i=0; i<3; i++){ 
    Thread th = new Thread(GetCar()); 
    Thread.Start(); 
    } 

private void GetCar(){ 
    Cars c; 
    if(i == 0){ 
     c = new Cars(
     Brand = "Toyota", 
     Name = //something 
    )}; 
    }elseif(i == 1){ 
     c = new Cars(
     Brand = "Isuzu", 
     Name = //something 
    )}; 
    }elseif(i == 2){ 
    c = new Cars(
     Brand = "Mazda", 
     Name = //something 
    )}; 
    } 
} 

編輯: 我只是做了一個示例代碼。我有一個項目,就像在網站上抓取信息一樣,需要一點時間才能完成......我只想做一個多線程,一個網站中的一個線程......每個網站都會在類上傳遞一個值..現在我的問題是如果我點擊x網站的datagridview,即使信息還沒有完成,這也會給我提供該網站的信息。它是否會讓sens è?

+1

爲什麼要創建新線程來構造一個簡單的對象?另外,我不知道你實際要問的是幫助你做什麼。 – Servy 2015-02-05 16:42:42

+0

你想通過使用線程實現什麼?你知道線程是什麼嗎?我在問,因爲你的代碼看起來非常簡單,使用線程需要對語言和運行時有深入的理解 - 基於你的例子,我假設(可能錯誤地)你缺少這些。 – xxbbcc 2015-02-05 16:45:52

+0

那麼它很難解釋..我只是做了一個示例代碼..我有一個項目,就像在網站上抓取信息一樣,需要一點時間去做..我只想做一個多線程,一個線程在一個網站..每個網站將傳遞一個類的價值..現在我的問題是,如果我點擊與X網站datagridview,這將給我的網站信息,即使信息尚未完成..它是否使感? – Mark 2015-02-05 17:00:49

回答

1

你應該看看事件。基本上你會在getcar()方法中提出一個carfoundevent。

基礎知識是創建一個自定義eventargs,其中包括您的汽車新instace。

Raise CarFound事件。

線程創建者服務訂閱事件。

+0

不要忘記正確的Invoke/InvokeRequired代碼,如果使用這個建議與基於GUI的應用程序。 – 2015-02-05 17:57:28