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ő:

Kapcsolódó cikkek