2017-02-16 9 views
-1

それは以下を示すように私は私が複数のスレッドを使用したいが、私は一つ一つを暗くし、特定のサブにそれぞれ1に対処する必要があり、I」、私のプログラムで小さな問題を抱えています前にこれをやったことがありますが、私はVB.Netを長い間使用していませんでした。これを読んだり、助けたりする人に感謝します。ここでVB.NETマルチスレッド無制限のスレッド

Imports System.Threading 

Public Class Form1 

Dim thread As System.Threading.Thread 
Dim ct as boolean = True 

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    thread = New System.Threading.Thread(AddressOf Main) 
    thread.Start() 
End Sub 

Sub Main() 
    Do Until ct = False 
     'Executes something 
    Loop 
End Sub 

End Class 

は、上記の例

Dim x As Integer = 1 
Private Sub asd() 
    Do Until x = 50 
     Dim thread & x As System.Threading.Thread 
     thread & x = New System.Threading.Thread(AddressOf Main) 
     thread & x.Start() 
     x = x + 1 
    Loop 
End Sub 

だ私は50のスレッドをしたいの例で、これはそのわずかなアイデアを動作しません。

+2

Google for Task Parallel Library and Task.Run –

+0

最近、特に.NETで新しいスレッドを作成する必要はほとんどありません。通常はより良いアプローチです。しかし、最良のアプローチは、あなたが達成しようとしていることと、この「何かを実行する」が実際に行っていることに完全に依存します。私はそれをチェックし、実際に私は私が.. uはそれに私を打つここにいくつかの説明 –

+0

@PanagiotisKanavos .. – slammyslam23

答えて

1

これはほぼ確実に悪い考えです。多くのスレッドがより良いパフォーマンスに必ずしも等しいとは限りません。

...しかし、これはあなたのコードを見て必要だろうかです:

Private Threads As New List(Of Thread) 

Private Sub asd() 
    For i As Integer = 1 To 50 
     Dim t As New System.Threading.Thread(AddressOf Main) 
     Threads.Add(t) 
     t.Start() 
    Next 
End Sub 
+0

HA HA @IdleMindを得ることができます願っていた走る何かを得ることができませんでしたしました –

+0

@Trevorあなたの両方が働いて答えを与えましたこれは素晴らしいです!しかし、私は小さな質問をしています。スレッドのこの量の私の意図は、私がやっている処理をスピードアップすることです、それはなぜそれが遅くなる10スレッド以上ですか?これはネットワークを使用していますが、十分だと思われる40MBpsがありますか? a7-6700k もう1つのスレッドを使用しているので、私は1つのサブまたは分割にすべてのプロセスを置くことをお勧めします。ただ1つのサブ、正しい? – slammyslam23

+0

@ slammyslam23より多くのスレッドがパフォーマンスを意味するわけではありません。特に、パフォーマンスがCPUに制限されていない場合です。もう一度、私の元のコメントごとに、あなたは実際に何をしていますか?あなたのCPUに実際のコアを持っているより多くのスレッドを持つことは理にかなっていませんし、最初はCPU上でボトルネックになっていなければそれほど難しくありません。 –

0

私はちょうどListオブジェクトに追加したい:

Dim Threads As New List(Of System.Threading.Thread) 

Private Sub asd() 
    For X As Integer = 0 To 49 
     Threads.Add(New System.Threading.Thread(AddressOf Main)) 
     Threads(x).Start 
    Next 
End Sub 

Threadsは、ゼロスタートを使用していますインデックス。