Konzolos alkalmazás, a Microsoft docs

belépés

Ez az útmutató megmutatja, hogy Ön egyes funkciók Core .NET és C # nyelven. Lesz megismerkedhetnek a következő szempontokat:

  • dolgozó parancssori felület (CLI) .NET Core;
  • szerkezete C # konzol alkalmazás;
  • konzol input-output;
  • alapvető információkat az API fájlt IO .NET Core;
  • Alapvető információk az aszinkron programozási modell, feladatok .NET Core.

Ez az útmutató egy sor funkciót. Kezdjük szétszedni őket viszont.

Előfeltételek

Létre egy alkalmazást

Az első lépés, hogy hozzon létre egy új alkalmazás. Nyisson meg egy parancssort, és hozzon létre egy új könyvtárat a kérelmet. Menj a könyvtárba. A parancssorba írja DotNet új konzol. Ez a parancs létrehoz egy kezdeti fájlokat a Hello World alkalmazás alapja.

Mielőtt módosítja a kérelem, nézzük meg az eljárást az elindítását. Amikor létrehoz egy alkalmazást, a parancssor Dotnet visszaállítani. Úgy kezdődik a helyreállítási folyamat NuGet csomagot. NuGet jelentése Package Manager for .NET. Ez a parancs letölti az összes hiányzó függőségek a projekt. Mivel van dolgunk egy új projekt, még mindig nincs függőségeket, így az első futam lesz betöltve csak .NET Core platform. Ezután az első start parancs Dotnet helyreállítására kell majd csak akkor kezdődik az új, függő csomag vagy frissítése verziók függőségeket. Ez a folyamat is teremt a projekt file lock (project.lock.json) a projekt könyvtárában. Ez a fájl segít kezelni a projekt függőségeket. Rámutat a helyi projekt helyének függőségeket. Ez a fájl nem feltétlenül kerül a verziókezelő rendszer. Ez automatikusan jön létre, amikor a DotNet restore parancsot.

Amikor teljes gyógyulás csomagok futni DotNet építeni. Ez a parancs elindítja az alrendszer szerelvény, és létrehoz egy futtatható fájlt az alkalmazás számára. Most Dotnet futás parancs. amely elindítja az alkalmazást.

Ez a kijelentés azt mondja a fordítónak, hogy a hatálya alá tartozó valamennyi típusok System névtér. Mint más objektum-orientált nyelvek, mellyel dolgozni korábban, C # használ névterek szervezni típusok. Ebben a programban Hello World minden pontosan ugyanaz. Mint látható, a program tartalmazza a térben ConsoleApplication neveket. Ez nem túl értelmes nevet, változtassuk meg a TeleprompterConsole:

Olvasás és kimeneti fájlok

Az első funkció, amely ehhez hozzátesszük, hogy olvasni az adatokat egy szöveges fájlt, és megjeleníti a kapott szöveget a konzolon. Először is meg kell adni a szöveges fájl. Másolja a sampleQuotes.txt projekt könyvtár fájlt a GitHub repository ezt a példát. Ez lesz a forrása a szöveget az alkalmazás. Letölteni egy minta alkalmazás erre a szakaszra, kövesse az utasításokat a példákat és útmutatást.

Most adjuk hozzá a Program osztály (ez mindössze mögött módszer Main) következő módszerrel:

Ez a módszer két új típusú névterek. Ahhoz, hogy ezt a programot sikeresen össze, meg kell adni, hogy az elején a következő két sort a fájlban:

IEnumerable interfész meghatározott System.Collections.Generic névtérben. A File osztály meghatározása a System.IO névtérben.

Ez a módszer egy speciális altípusa a standard módszer a C # enumerátort. A módszer visszaadja egy számlálóra szekvenciákat, melyek késleltetett számítást alkalmazzuk. Ez azt jelenti, hogy minden egyes elem a sorozatban csak akkor keletkezik, abban az időben, amikor még használatban van, a feldolgozási sorrend kódot. számlálóra módszerek tartalmaznak egy vagy több utasítást így vissza. Visszaküldött által ReadFrom objektumot tartalmaz kódot létrehozásához minden egyes eleme a szekvencia. A mi példánkban, elolvassa a következő sort a forrás fájlt, és visszatér ezt a fonalat. Minden alkalommal, amikor a hívó kéri a következő elem a sorozatban, a kód beolvassa a fájlt, és visszatér a következő sort. Ha a fájl teljes, a sorrend a jelentések, hogy nincs több elem.

Ez használ két C # szintaktikai elemek lehetnek új neked. Utasítás ezzel a módszerrel ellenőrzések engedje források. Egy változó, hogy inicializáljuk a kézikönyv használatával (ebben a példában, olvasó) végre kell hajtania a IDisposable interfész. IDisposable interfész meghatározza egyetlen módszer (megsemmisíteni), amely felhívta a felszabadulását az erőforrás. A fordító létrehoz egy kihívás, amikor kódfuttatást eléri a záró zárójel segítségével utasításokat. Létrehozta a fordító kód biztosítja a kibocsátás a forrás, akkor is, ha a kód blokk, egy konkrét utasítás, kivételt dob.

Részben olvasó meghatározni kulcsszó var. Var kulcsszó határozza hallgatólagosan gépelt lokális változó. Ez azt jelenti, hogy a változó típusát határozza fordításkor objektumtípusonként rendelt változó. Itt a változó tárolja StreamReader objektumot. által visszaadott @ System.IO.File.OpenText.

Most készítsük el a kódot a fő módszer, hogy olvassa el a fájlt:

A program futtatása csapat DotNet fut, és biztosítják, hogy minden sornyi szöveg jelenik meg a konzolon.

Ezenkívül a késedelem és kimeneti adatok formázása

Ez a rész bemutatja a két tevékenység. Először is, frissíti a bejáró módszer, hogy visszatérjen az egész szöveget nem minden, mivel minden egyes szót külön-külön. Ehhez olyan változtatásokat. Helyettesíti a manuális hozam visszatérő vezetéke; a következő kóddal:

Most meg kell változtatni a kódot a gépsorokat a fájl, hozzátéve, a késedelem lezárását követően minden szó. Cserélje Console.WriteLine felhasználói kézikönyv (vonal) az eljárás főbb egy blokk-kód:

A Task osztály térben System.Threading.Tasks neveket. így segítségével ezeket az utasításokat adni a fájl tetejére:

Most adjuk hozzá a következő kódot, miután a nyilatkozat hozam visszatérő szó + „”; (Mielőtt a záró zárójel):

aszinkron feladatok

És az utolsó lépés fogunk hozzá a kódot, amely elvégzi két aszinkron feladatokat, amelyek közül az kiad egy szöveget, és a második bemenetre vár a felhasználó számára, hogy gyorsítani vagy lassítani a szöveges kimenetet. Ez a szakasz van osztva több lépésben, a végén, amely megkapja az összes szükséges frissítéseket. Az első lépés a létrehozása az aszinkron feladat (@ System.Threading.Tasks.Task), amely visszaadja a módszer a kódot, amit korábban létrehozott és olvasni display file.

Adjuk hozzá a következő módszer a Program osztály. Ez a szöveg alapján az eljárás szövegének Main:

De előfordulhat két változás. Először is, a szövegben van Wait () hívást. amely szinkronban vár befejezése a feladat. Ahelyett, hogy ez a verzió a kulcsszó várnak. Ahhoz, hogy ez a munka, a módszer aláírásával hozzá szeretné adni a módosító aszinkron. Ez a módszer visszaadja a feladat. Felhívjuk figyelmét, hogy nincsenek utasítások a visszatérő feladat objektumot. Ehelyett a feladat objektum jön létre, hogy a kód a fordítóprogram rendelkezik ponton várják operátor használatát. Képzeljük el, hogy az eljárás befejeződött végrehajtás elérésében várja a látogatókat. Ez visszaadja a feladatot a jele, hogy a munka még nem fejeződött be. Módszer reconvenes, mikor lesz a várható feladat. Amikor a munkamódszer befejeződött, ez tükröződni fog a visszaadott objektum feladat. A hívó helyzetét nyomon követheti a kapott feladat. hogy meghatározza az elkészítési idő módszer.

Most, az új módszer lehet nevezni a módszer Main:

Itt, az eljárás fő. a szinkronizáció vár. Amikor csak lehetséges, akkor használja a kezelő helyett várják a szinkron készenlét. De a fő módszer a konzol alkalmazás számára tilos a várnak operátor. Ellenkező esetben az alkalmazás előtt befejeződnek teljes feladatkörét.

Ez létrehoz egy lambda kifejezés képviselő delegált Action. hogy az olvasás karakternél a konzolból és módosíthatja a lokális változó késleltetéssel abban az esetben, ha a felhasználó rákattint a gombra "<" или ">”. Ez a módszer ReadKey () metódust. Hogy megakadályozza a végrehajtását és várható billentyűleütés.

Hogy teljes legyen a teremtés ez a funkció, szükségünk van egy új utasítást aszinkron feladat. módszer, amely visszaadja, kezdeményező mindkét feladat (GetInput és ShowTeleprompter) és irányító közötti adatcsere feladatokat.

Tedd ezt az osztályt egy külön új fájlt, és arra a következtetésre jutott a térben TeleprompterConsole neveket. a fentiek szerint. Azt is meg kell hozzá a nyilatkozatot a statikus. használható linkeket Min és Max módszerek meghatározása nélkül a nevét a külső osztály vagy névtér. statikus import minden tanítási módszerek ugyanabba az osztályba. Ez eltér a felhasznált utasítások korábban. importáló az összes névtér osztályok.

A másik újdonság az a nyelv, az Ön számára - az útmutató zár. Ez biztosítja, hogy ezt a kódot bármikor csak egy szál futhat. Ha bármely áramlási hordozza a blokkolt rész, az összes többi szál meg kell várnia, amíg ő jön ki ez a rész. lock utasítás használ egy objektumot, amely megvédi a lezárt szakaszt. Ez az osztály felel meg a standard elvnek az objektum zár az osztályon belül.

Most frissítenie kell a módszereket és ShowTeleprompter GetInput használni az új objektum config. És egy utasítás Feladat. amely visszaállítja a aszinkron módszer. fut mindkét feladat és munka befejezése után vége az első probléma:

Itt mi most egy hívást az új módszer WhenAny (Task []). Ez a módszer létrehoz egy feladatot (Task), amely véget ér, amint a teljes bármely feladatát a listán az érveket.

Most frissítenie kell a módszereket és ShowTeleprompter GetInput. hogy használja a config tárgyat a késedelem:

Az új verzió ShowTeleprompter módszer egy új módszert az osztályban TeleprompterConfig. Most arra van szükség, hogy módosítsa a fő módszer. ehelyett okozott ShowTeleprompter RunTeleprompter:

Végül adjunk hozzá egy osztály módszer TelePrompterConfig SetDone Kész épületenként

következtetés

Ebben a tutorial, megmutattuk, számos C # nyelv jellemzői és a könyvtárak .NET Core, a munkával kapcsolatos konzolos alkalmazások. Ismeretén alapul akkor képes lesz arra, hogy fejlesszék megértése a nyelv és az osztályok itt bemutatott. Láttátok alapvető példák segítségével file és a konzol input-output aszinkron programozás alapján problémák blokkoló és nem blokkoló. Kapsz tájékoztatás a nyelv a C #, a szerkezet a program C #, valamint a CLI és .NET Core alapok.

Kapcsolódó cikkek