我正在開發一個小應用程序。需要你的幫助。GUI中的C#多線程方法
我有一個10列的表。說,我在列表視圖中選擇5行。 我將列表中的col_1的所有值都傳遞給一個方法。
如果所有值相等,則設置combo_box1值=「相等」,否則值=「不等於」。
當前的方法:
我有10名列表(?似乎很跛腳......是不是我問過關於這個疑問句......),每一個山坳。
10調用檢查值是否相等的方法,每個調用一個列表。隨後,設置組合框的(10個組合框)值。
如果我有100條記錄,我估計所花的時間會增加。所以,我想到了實現線程。
的精力投放:
我已經使用了this.Invoke(新的委託...)針對嘗試訪問主線程的控制線程的方法。它工作正常。我試圖根據我的需要操縱這個。不能這樣做。請幫幫我。
[編輯]
的罪魁禍首是圖像比較......其採取相當長的時間才能完成......下面是代碼... 我存儲的所有圖像(比如山坳3號)的說10排在列表...
// other stuffs [DllImport("msvcrt.dll", CallingConvention=CallingConvention.Cdecl)] private static extern int memcmp(IntPtr b1, IntPtr b2, long count);
// create a list of images MemoryStream imageStream = new MemoryStream(tempImage.Data.Data); Bitmap artCoverImage = new Bitmap(imageStream); // culprit ? artCoverList.Add(artCoverImage);
// call the method CheckIfEqual(artCoverList) // culprit ?
// THE method private void CheckIfEqual(artCoverList) { Bitmap tempBitMap = artCoverList[0];
foreach (Bitmap bmp in artCoverList) { if (bmp == null) return false; if (bmp.Size != tempBitMap.Size) return false; var bd1 = tempBitMap.LockBits(new Rectangle(new Point(0, 0), tempBitMap.Size), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb); IntPtr bd1scan0 = bd1.Scan0; int stride = bd1.Stride; long len = stride * tempBitMap.Height; var bd2 = bmp.LockBits(new Rectangle(new Point(0, 0), bmp.Size), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb); IntPtr bd2scan0 = bd2.Scan0; returnValue = memcmp(bd1scan0, bd2scan0, len) == 0; bmp.UnlockBits(bd2); tempBitMap.UnlockBits(bd1); } }
,我花了一整天的時間來得到這部分圖像比較的工作......我認爲,部分地方將其轉換MEM流到bmp是罪魁禍首...
[編輯2]
傢伙...需要你的幫助......任何想法...如何比較圖像的列表...除上述以外的.. 。
感謝,
開發
首先,根據你在做什麼,增加記錄到100應該不會有太大的差別,特別是如果你只是在列表上幾次解析。其次,我們需要更多的信息。你是如何嘗試操縱你的線程調用的?你希望線程如何工作? – 2011-02-10 15:30:00
事情是列數可以增加...我想打電話,說3個線程...每個處理3列......這樣.. – Dev 2011-02-10 15:32:33