Pytanie : Potrzeba Guzik na zastosowanie i monotor ono być tekst

I mieć using VB6sp6 być sprawnie Guzik i ono być Tekst/Podpis Zmiana Using API Wezwanie. Teraz I dawać zadanie z mój program VB.NET (I używać VS2008). I nawracać mój app VB.NET using the czarownik w VS2008 ale gdy ty móc wizerunek właśnie VB.NET I troszkę wprawiać w zakłopotanie. I lubić być ono różny i uczyć się gdy I być jaźń taught.

Let wzmianka the Guzik być na zastosowanie I potrzebować, i wysyłać flaga różny który zapinać w ten stan dla 90 sekunda. I być sprawnie vb6 w VB6 ale móc; t wydawać się ono w VB.NET

I am sprawnie the nadokienny ale niezdolny past który wskazywać i znajdować the Guzik na the Application.

Here być co I mieć do tej pory;

Here być the API funkcja I używać.
Public Oznajmiać Funkcja FindWindow Wyzwolenie "user32.dll" Pseudonim "FindWindowA" (ByVal lpClassName Jako Sznurek, ByVal lpWindowName Jako Sznurek) Gdy Integer

Public Oznajmiać Funkcja EnumWindows Wyzwolenie "user32.dll" (ByVal lpEnumFunc Jako Integer, ByVal lParam Jako Integer) Gdy Integer

Public Oznajmiać Funkcja EnumChildWindows Wyzwolenie "user32.dll" (ByVal hWndParent Jako Integer, ByVal lpEnumFunc Jako Integer, ByVal lParam Jako Integer) Gdy Integer


This być znalezienie I używać dla the znalezienie the nadokienny….
'Set jaki Okno for
vHwnd = FindWindow ("ClassName", vbNullString)

I móc potrzeba jeżeli potrzeba ale… I myśleć jak tylko I dostawać past the above dostawać wtedy wzywać EnumChildWindows z the następujący code
During the zamiana ono dać ten ostrzeżenie podczas Ulepszenie i szczery I mieć kłopot mój umysł wokoło the pojęcie…
" Dodawać delegat dla AddressOf EnumChildProc "

Public Funkcja FIND_RELEASE () Jako Boolean
Dim FoundRelease Jako Object
Dim OKButtonHwnd Jako Object
Dim i Gdy Object
HwndCount = (0) 'initialize the rękojeść counter
FoundReleaseButton = Fałszywy 'Set zapinać nie found
RetVal = EnumChildWindows (VoipHwnd, AddressOf EnumChildProc, CInt ((0)))

'Looks dla the Ponownie się łączyć guzik (Chwyt Guzik)
For i = (0) HwndCount - 1
'Search Eng the Ponownie się łączyć button
If W połowie (AppClass (i), (1), 6) = "Guzik" I W połowie (AppText (i), (1), 9) = "Ponownie się łączyć" I FoundRelease = Fałszywy Wtedy 'szukać dla the wtedy button
OKButtonHwnd = AppHwnd (i) 'sklep the wtedy guzik handle
FoundRelease = Prawdziwy 'trzepnięcie the przełącznikowy guzik found
End If
Next i
Dim FlashForm Jako frmFlash
If FoundRelease = Prawdziwy Then
FoundReleaseButton = True
timHold.Enabled = True
ChangeTrayIcon (, (Me.Image3.Image))
'Seeing
If exHoldTime = CDbl ("90") Then
ChangeTrayIcon (, (Me.Image4.Image))
FlashForm = Nowy frmFlash
FlashForm.ShowDialog ()
FlashForm = Nothing
End If
Exit Function
End If
End Function


pomagać lub pointer i potrzebować być wielki… być gmeranie teraz dla kilka days.


Odpowiedź : Potrzeba Guzik na zastosowanie i monotor ono być tekst

Pierwszy rzecz I polecać ruszać się twój egzekutor usługa na zewnątrz the pętla.  Ty naprawdę tylko potrzebować naprawdę to.  W zależności od twój urzeczywistnienie, ty móc sprawnie ono klasowy zmienna, lub ładunek elektrostatyczny który dzielić wszystkie przykład ten klasa lub prywatny członek jeżeli ten klasa potrzebować swój swój niciany basen.  Lub sposób, dopóki ty zamykać the usługowy puszek, ty być sprawnie reuse tamte nić zamiast the koszty stałe każdy czas.  Jeżeli wieloskładnikowy wezwanie ten metoda potrzebować równocześnie, ruszać się the egzekutor usługa tworzenie plecy w the metoda, ale na zewnątrz the pętla.

Ono także spojrzenie jak ty tworzyć 10 niciany basen, z 10 nić nić nić rozkaz.  The kod I dołączać przerabiać dołączać wszystko rozkaz z 10 nić.
(1):
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
społeczeństwo klasowy ClearDownService {
    intymny int nić;
    intymny ExecutorService executorService;

    jawny ClearDownService (int nić) {
        jeżeli (nić < 1="">= 1. ");
        }
        this.threads = nić;
        this.executorService = Executors.newFixedThreadPool (this.threads);
    }

    // I modyfikować twój iteracja kod ty mieć niektóre Kolekcja OrderModel przedmiot
    // że ty używać the iterator.  Ponieważ ty używać JDK 1.5+, swój dużo bardziej
    // iterator.next i iterator.next Generics zamiast the powrót iterator.next ().
    // I także modyfikować twój iteracja kod the obmurowany foreach konstrukcja.
    jawny kawitacyjny checkOrders (Inkasowy rozkaz) {
        // Initialize zapadka dla the sumaryczny liczba rozkaz, zamiast nić.
        // Metoda zapewniać wszystkie rozkaz przetwarzać zanim ten metoda uzupełniać
        definitywny CountDownLatch startLatch = nowy CountDownLatch (orders.size ());

        // ponieważ ty używać JDK 1.5+, łatwy i jeżeli ty używać generics
        // i the obmurowany foreach zamiast the iterator
        dla (definitywny OrderModel model: rozkaz) {
            executorService.submit (nowy Runnable () {
                jawny kawitacyjny bieg () {
                    próba {
                        Kalendarzowy teraz = Calendar.getInstance (TimeZone.getTimeZone ("Europa/Londyn"));
                        jeżeli (isEligibleForClearDown (model, master.getCleardownFields () .getClearDownReqFrom (), teraz)) {
                            jeżeli (model.getOrderFields () .hasParentOrderId ()) {
                                // dodawać wszystkie Dziecko rozkaz rezultat końcowy
                                results.add (model);
                            } inny {
                                // dodawać mateczny rozkaz the mateczny lista
                                parentOrders.add (model);
                            }
                        }
                    } w końcu {
                        // ono w w końcu blokowy zapewniać ono dostawać dzwonić dzwonić
                        // jakaś wyjątek który zdarzać się w the ciało the metoda
                        startLatch.countDown ();
                    }
                }
            });
        }
        próba {
            startLatch.await (); // czekać na wszystkie przedmiot zupełny przerób
        } chwyt (InterruptedException e) {
            LOGGER.error ("Przerywać Wyjątek podczas gdy czekać the odliczanie zapadka end.");
        }
    }
}
Inne rozwiązania  
 
programming4us programming4us