Új hozzászólás Aktív témák

  • orbano

    félisten

    Ja és hogy tanuljatok. Invoke!=szálak közötti függvényhívás. Egyszerűen csak aszinkron hívás, ami egy szálom belül is történhet. Amikor futnak a formnak az eseményei, meghívsz egy delegate-et begininvoke-kal, akkor a függvényhívás ''bejegyződik'' a formnál, majd ha jól tudom akkor hajtódik végre, ha a form ''visszakapja a vezérlést''. Ez az esetünkben pont azért jó, mert bennevagyunk egy bazi nagy hívásban, amit valamelyi kevent elindítot és szépen egymás után dolgoznak az eventeket lekezelő függvények. Ezek közül vagyunk mi az egyik, ahol Select-elni akarunk. A probléma csak az, hogy bármit is csinálunk, a call stack-ben lesz utánunk egy másik hívás (a textbox sajátja), ami elkaszálja a Select()-ünket. Ezért aszinkron hívjuk meg a Select-et: elküldjük egy delegate-tel, hogy majd hajtódjon végre később. A begininvoke ezt elvégzi, majd azonnal visszatér, maga a kód még nem futott le. az majd akkor fog, ha a teljes eseménylánc lefutott és a form visszakapja a vezérlést. Ekkor szépen lefuttatja a delegate által megadott kódot.

Új hozzászólás Aktív témák