我有一個問題,在vb.net
誤會線程如何工作
首先我想告訴大家,我沒有線程之前(只是在學校)工作的大問題,線程,我讀了很多關於它的網頁,但沒有一個可以幫我解決我的問題。
這裏我的主要問題是理解邏輯,如果有可能,解決我有的問題,都是相關的,然後我會解釋這個問題。
的代碼有沒有相關的評論和/或文檔,並且是很多年前制定一項方案,這樣做是不工作在辦公室的傢伙,沒有人知道它是如何工作的:S
我有一個名爲listOfProccess的列表,何時只有1個工作正常。
在回調函數在QueueUserWorkItem
填寫關於p
的信息,然後執行線程,我想
該列表包含與信息類型
listOfProccess[].type = 'a/b/c/d/e/f/g/'
陣列還列表包括一個ID。
代碼:
If listOfProccess.Count > 0 Then
Threading.ThreadPool.SetMinThreads(1, 1)
Threading.ThreadPool.SetMaxThreads(4, 4)
For Each p In listOfProccess
Try
Threading.ThreadPool.QueueUserWorkItem(New Threading.WaitCallback(Object p.function))
Catch e As Exception
sendMail("[email protected]", "[email protected]", "", e.StackTrace)
End Try
Next
問題: 我這裏有兩個問題:
有時執行列表中即一個項目 'A' 的無限循環,和消費的所有資源機器,但如果我關閉並重新啓動,工作,我不知道如果是與線程的問題或不真實,我認爲這是其他的事情,因爲這個問題開始兩週或前幾周,程序仍然在一年中運行。
這一個我認爲是與有關線程,如果我有兩個(或更多)的名單像這樣的號碼:
p[1].type = 'a/b/c/d/e/f/g/'
p[1].ID = 1
p[2].type = 'ww/xx/ff/yy/aa/rr/'
p[2].ID =2
當系統執行這樣的事情時,它遵循的方式是「隨機的」,即。需要第一個,a, b,c
之後,它確實ww
,並回到第一個。如果我在列表中有更多項目,比如4或5,則問題更大;這不是一個很大的問題,因爲程序起作用,它不是100%正常工作,而是工作,更多的是試圖理解爲什麼它在這種方式下工作。
任何幫助,歡迎。
聽起來可能很刺耳,但最好的選擇是刪除所有內容並重新開始。您需要評估程序必須做的所有事情以及如何完成,即使您認爲自己掌握了所有東西,但只要您不期望,其他人的代碼就會失敗。無論如何,祝你好運,你會需要它。 – 2015-04-01 10:57:41
@EduardoSoriano從0開始並不是一個有效的選項,它是一個非常龐大而複雜的項目,開發了幾個月。 – TiGreX 2015-04-01 11:55:00
防火線穿線永遠不是問題。當太陽正在閃閃發光時,它會起作用,並且你的背部有風。但它總是遲早會下雨。您需要做更多的工作來診斷真正的問題,至少您需要添加跟蹤,以便了解發生了什麼。 – 2015-04-01 12:11:27