Változásainak nyomon követése a fájlrendszerben és programozási patakok (szál), Book of Knowledge
Változásainak nyomon követése a fájlrendszerben és programozási adatfolyamok (szálak)
Kulcsszavak: külső alkatrészek, Delphi, patak, szál, TThread, könyvtárak felmérés változások nyomon követéséhez fájlok FindFirstChangeNotification, WaitForSingleObject
Változásainak nyomon követése a könyvtárban
Végrehajtásakor közötti programok gyakran köteles tájékoztatni a fogadó rendszer (esetünkben a 1C: Enterprise), hogy a fájlok származott, és itt az ideje, hogy.
Alternatív módon, lehetőség van arra, hogy átvizsgálja a mappát a készenléti feldolgozási eljárás (például, csináld minden N másodpercben).
A másik talán még helyes -, hogy használja a rendszer funkcióit FindFirstChangeNotification, FindNextChangeNotification és FindCloseChangeNotification a Windows API (hasonló funkciókat létezik a Unix operációs rendszer). Ebben az esetben a bejelentést a változás a fájlrendszer elvégzi a rendszermag, és ez nem szükséges „prodelyvat lyuk” a merevlemezen állandó fellebbezések neki.
Mit teszünk a kódot 1C
Miután egy ilyen inicializálási folyamatot ObrabotkaVneshnegoSobytiya 1C értesítést kap a változás, ebben a példában a mappa „c:”. Ha a vk.OtslezhivatPodkatalogi = 1, akkor egy másik, és könyvtárra. (Például, hogy kialakult egy új fájlt a könyvtárban) fogják ellenőrizni csak a változások a fájl nevét, de nem változtatja meg a fájlok tartalmát.
Megállítani lekérdezési változtatásokat a könyvtár funkció elérhető
Flow eljárás Delphi
Az eljárás generál események (ExternalEvent), akkor felismeri a változásokat az említett fájlrendszermappájához. FILE_NOTIFY_CHANGE_FILE_NAME paraméter jelzi, hogy ellenőrizzék a fájl nevét. Lásd. A WinAPI segítséget (például az MSDN lemezen), hogy megtudja, milyen lehetőségek vannak erre a paraméterre.
inicializálás flow
Adatfolyamként én meg egy külön osztályban, amit TThread.
A kivitelező a következőképpen jellemezhető:
Tárgya a külső komponens egy mezőt MyThread (típus - TThread).
A módszer VC I inicializálni változó áramlási a következőképpen:
Ezen a ponton kezd végre mi eljárás folyamatábrája:
eljárás TMyThread.Execute;
És függetlenül attól, hogy fut, amíg nem adok parancsot, hogy állítsa le az áramlás:
Egy szál lehet fogni a helyzetet, hogy azt akarja, hogy elolvasása után a Lezárt tulajdonság:
Hívás MyThread.WaitFor vár szál befejezi a munkát, amely után egy változó lehet semmisíteni - MyThread.Destroy.
következtetés
Megvizsgáltuk dolgozik egy végrehajtási szál a külföldi eleme a 1C: Enterprise.
A menet végrehajtja a jótékony hatások - nyomon követi a fájlok a könyvtárban.
Tudod, hogy az áramlás valami mást csinál: például kihallgatni FTP, postaláda poll vonalkódolvasó vagy egyéb hasznos funkció az automatikus üzemmódot.
Külső alkatrész forráskódot és tesztkonfigurációjának letölthető: