Heim Backend-Entwicklung C#.Net-Tutorial Ressourcenfreigabe zu C#-Video-Tutorials

Ressourcenfreigabe zu C#-Video-Tutorials

Sep 01, 2017 pm 01:39 PM
.net 分享

„C#-Tutorial“ ist ein Einführungskurs in die C#-Sprache. Der Kurs beginnt mit den Grundkonzepten der .NET-Plattform und C# und bietet eine detaillierte Einführung in die grundlegende Syntax der C#-Entwicklung. einfache Programmlogik und die Verwendung von Visual Studio-Tools. Implementierung häufig verwendeter Algorithmen. Gleichzeitig hoffen wir, dass wir den Studierenden durch studienbegleitende Übungen und Programmierübungen einen schnellen Einstieg in die Sprache C# ermöglichen können.

Ressourcenfreigabe zu C#-Video-Tutorials

Adresse für die Kurswiedergabe: http://www.php.cn/course/84.html

Der Unterrichtsstil des Lehrers:

Die Vorträge des Lehrers sind einfach und ausführlich, klar in der Struktur, werden Schicht für Schicht analysiert, ineinandergreifend, streng in der Argumentation, streng in der Struktur und im Gebrauch Die logische Kraft des Denkens, um die Aufmerksamkeit der Schüler zu erregen. Nutzen Sie die Vernunft, um den Unterrichtsprozess im Klassenzimmer zu steuern. Durch das Anhören der Vorlesungen des Lehrers lernen die Schüler nicht nur Wissen, sondern erhalten auch eine Denkschulung und werden auch von der strengen akademischen Haltung des Lehrers beeinflusst und beeinflusst

Der schwierigere Punkt in diesem Video ist C# Multi -Threading:

1. Gründe für die Verwendung von Threads

1. Threads können verwendet werden, um Code von anderen Codes zu isolieren und zu verbessern die Zuverlässigkeit von Anwendungen.

2. Threads können verwendet werden, um das Codieren zu vereinfachen.

3. Threads können verwendet werden, um eine gleichzeitige Ausführung zu erreichen.

2. Grundkenntnisse

1. Prozess und Thread: Als Grundeinheit des Betriebssystemausführungsprogramms verfügt der Prozess über die Ressourcen des Anwendungsprogramms. Die Ressourcen des Prozesses werden gemeinsam genutzt nach Threads Besitzt keine Ressourcen.

2. Vordergrund-Thread und Hintergrund-Thread: Neue Threads, die über die Thread-Klasse erstellt werden, werden standardmäßig im Vordergrund-Thread angezeigt. Wenn alle Vordergrund-Threads geschlossen sind, werden auch alle Hintergrund-Threads direkt beendet, ohne eine Ausnahme auszulösen.

3. Suspend (Suspend) und Wake-up (Resume): Da die Ausführungsreihenfolge von Threads und die Ausführung des Programms unvorhersehbar sind, ist die Verwendung von Suspend und Wake-up in praktischen Anwendungen anfällig für Deadlocks. Es sollte so wenig wie möglich verwendet werden.

4. Blockierender Thread: Beitreten, blockiert den aufrufenden Thread, bis der Thread beendet wird.

5. Beenden Sie den Thread: Abbrechen: Lösen Sie eine ThreadAbortException-Ausnahme aus, um den Thread zu beenden. Interrupt: Löst eine ThreadInterruptException-Ausnahme aus, um den Thread zu beenden, und die Ausführung kann durch Abfangen der Ausnahme fortgesetzt werden.

6. Thread-Priorität: AboveNormal BelowNormal Highest Lowe Normal, der Standardwert ist Normal.

3. Die Verwendung von Threads

Thread-Funktionen werden über Delegaten übergeben. Sie können ohne Parameter oder mit Parametern übergeben werden. Die Parameter können in einer Klasse oder Struktur gekapselt werden .

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            Thread t1 = new Thread(new ThreadStart(TestMethod));
            Thread t2 = new Thread(new ParameterizedThreadStart(TestMethod));
            t1.IsBackground = true;
            t2.IsBackground = true;
            t1.Start();
            t2.Start("hello");
            Console.ReadKey();
        }

        public static void TestMethod()
        {
            Console.WriteLine("不带参数的线程函数");
        }

        public static void TestMethod(object data)
        {
            string datastr = data as string;
            Console.WriteLine("带参数的线程函数,参数为:{0}", datastr);
        }
    } 
}
Nach dem Login kopieren

4. Thread-Pool

Da die Erstellung und Zerstörung von Threads einen gewissen Overhead erfordert, wird es zu einer übermäßigen Verwendung von Threads kommen Ursache Aufgrund der Verschwendung von Speicherressourcen wurde aus Leistungsgründen das Konzept des Thread-Pools eingeführt. Der Thread-Pool verwaltet eine Anforderungswarteschlange. Der Thread-Pool-Code extrahiert die Aufgabe aus der Warteschlange und delegiert sie dann zur Ausführung an einen Thread im Thread-Pool. Der Thread wird nicht sofort nach der Ausführung zerstört, sodass Aufgaben im Thread-Pool ausgeführt werden können Der Aufwand für die Erstellung und Zerstörung von Threads kann reduziert werden.

Der Thread-Pool-Thread ist standardmäßig der Hintergrund-Thread (IsBackground).

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            //将工作项加入到线程池队列中,这里可以传递一个线程参数
            ThreadPool.QueueUserWorkItem(TestMethod, "Hello");
            Console.ReadKey();
        }

        public static void TestMethod(object data)
        {
            string datastr = data as string;
            Console.WriteLine(datastr);
        }
    }
}
Nach dem Login kopieren


5. Aufgabenklasse

Es ist sehr einfach, die QueueUserWorkItem()-Methode von ThreadPool zu verwenden, um eine zu initiieren Das größte Problem bei dieser Methode besteht jedoch darin, dass es keinen integrierten Mechanismus gibt, der Sie darüber informiert, wann der Vorgang abgeschlossen ist, und dass es einen integrierten Mechanismus gibt, um nach Abschluss des Vorgangs einen Rückgabewert zu erhalten. Zu diesem Zweck können Sie die Task-Klasse von System.Threading.Tasks verwenden.

Erstellen Sie ein Task-Objekt und übergeben Sie den Rückgabetyp einer Operation für den generischen TResult-Parameter.

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            Task<Int32> t = new Task<Int32>(n => Sum((Int32)n), 1000);
            t.Start();
            t.Wait();
            Console.WriteLine(t.Result);
            Console.ReadKey();
        }

        private static Int32 Sum(Int32 n)
        {
            Int32 sum = 0;
            for (; n > 0; --n)
                checked{ sum += n;} //结果太大,抛出异常
            return sum;
        }
    }
}
Nach dem Login kopieren

Wenn eine Aufgabe abgeschlossen ist, wird automatisch eine neue Aufgabe gestartet.
Nachdem eine Aufgabe abgeschlossen ist, kann sie eine andere Aufgabe starten. Der vorherige Code wird unten neu geschrieben, ohne dass Threads blockiert werden.

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            Task<Int32> t = new Task<Int32>(n => Sum((Int32)n), 1000);
            t.Start();
            //t.Wait();
            Task cwt = t.ContinueWith(task => Console.WriteLine("The result is {0}",t.Result));
            Console.ReadKey();
        }

        private static Int32 Sum(Int32 n)
        {
            Int32 sum = 0;
            for (; n > 0; --n)
                checked{ sum += n;} //结果溢出,抛出异常
            return sum;
        }
    }
}
Nach dem Login kopieren

6. Asynchrone Ausführung von Delegaten

Asynchrone Aufrufe von Delegaten: BeginInvoke() und EndInvoke()

namespace Test
{
    public delegate string MyDelegate(object data);
    class Program
    {
        static void Main(string[] args)
        {
            MyDelegate mydelegate = new MyDelegate(TestMethod);
            IAsyncResult result = mydelegate.BeginInvoke("Thread Param", TestCallback, "Callback Param");

            //异步执行完成
            string resultstr = mydelegate.EndInvoke(result);
        }

        //线程函数
        public static string TestMethod(object data)
        {
            string datastr = data as string;
            return datastr;
        }

        //异步回调函数
        public static void TestCallback(IAsyncResult data)
        {
            Console.WriteLine(data.AsyncState);
        }
    }
}
Nach dem Login kopieren

7. Thread-Synchronisation

 1) Atomare Operation (verriegelt): Alle Methoden führen eine atomare Lese- oder Schreiboperation durch.

2) lock()-Anweisung: Vermeiden Sie das Sperren des öffentlichen Typs, da die Instanz sonst außerhalb des Bereichs der Codekontrolle liegt. Definieren Sie ein privates Objekt zum Sperren.

 3) Monitor implementiert die Thread-Synchronisierung

  Der Erwerb und die Freigabe exklusiver Sperren werden durch Monitor.Enter() und Monitor.Exit() erreicht. Nach dem Erwerb sind die Ressourcen exklusiv und nichts anderes Threads dürfen darauf zugreifen.

Es gibt auch eine TryEnter-Methode, die nicht blockiert und wartet, wenn die Ressource nicht angefordert werden kann. Sie können ein Timeout festlegen und false zurückgeben, wenn sie nicht abgerufen werden kann.

 4) ReaderWriterLock

  Wenn der Ressourcenvorgang mehr Lesen und weniger Schreiben umfasst, ist die Lesevorgangssperre eine gemeinsame Sperre, um die Ressourcennutzung zu verbessern, sodass mehrere Threads die Ressource lesen können Gleichzeitig ist der Schreibvorgang eine exklusive Sperre und es darf nur ein Thread ausgeführt werden.

5) Die Ereignisklasse implementiert die Synchronisierung

Die Ereignisklasse hat zwei Zustände: den beendeten Zustand und den nicht beendeten Zustand. Durch Aufrufen von WaitOne im beendeten Zustand kann der Erfolg angefordert und der Zeitzustand über Set auf den beendeten Zustand gesetzt werden.

1) AutoResetEvent (automatisches Reset-Ereignis)

2) ManualResetEvent (manuelles Reset-Ereignis)

6) Semaphore (Semaphore)

Signal Die Menge beträgt Eine vom Kernelobjekt verwaltete int-Variable. Wenn sie 0 ist, ist der Thread blockiert. Wenn der wartende Thread auf einem Semaphor entsperrt ist, beträgt die Semaphorzahl +1.

Der Thread verringert den Semaphor um 1 durch WaitOne und erhöht den Semaphor um 1 durch Release. Die Verwendung ist sehr einfach.

7) Mutex (Mutex)

Exklusive Ressource, die Verwendung ist ähnlich wie bei Semaphore.

8) Prozessübergreifende Synchronisierung

Eine Synchronisierung auf Systemebene kann durch Festlegen des Namens des Synchronisierungsobjekts erreicht werden. Verschiedene Anwendungen identifizieren unterschiedliche Synchronisierungsobjekte anhand des Namens des Synchronisierungsobjekts.

Das obige ist der detaillierte Inhalt vonRessourcenfreigabe zu C#-Video-Tutorials. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie teile ich Quark Netdisk mit Baidu Netdisk? Wie teile ich Quark Netdisk mit Baidu Netdisk? Mar 14, 2024 pm 04:40 PM

Quark Netdisk und Baidu Netdisk sind beide sehr praktische Speichertools. Viele Benutzer fragen sich, ob diese beiden Softwareprogramme kompatibel sind. Wie teile ich Quark Netdisk mit Baidu Netdisk? Auf dieser Website erfahren Sie ausführlich, wie Sie Quark Network Disk-Dateien auf der Baidu Network Disk speichern. So speichern Sie Dateien von Quark Network Disk auf Baidu Network Disk Methode 1. Wenn Sie wissen möchten, wie Sie Dateien von Quark Network Disk auf Baidu Network Disk übertragen, laden Sie zunächst die Dateien herunter, die auf Quark Network Disk gespeichert werden müssen, und öffnen Sie sie dann Wählen Sie im Baidu Network Disk-Client den Ordner aus, in dem die komprimierte Datei gespeichert werden soll, und doppelklicken Sie, um den Ordner zu öffnen. 2. Klicken Sie nach dem Öffnen des Ordners oben links im Fenster auf „Hochladen“. 3. Suchen Sie die komprimierte Datei, die auf Ihren Computer hochgeladen werden soll, und klicken Sie, um sie auszuwählen.

So teilen Sie NetEase Cloud Music mit WeChat Moments_Tutorial zum Teilen von NetEase Cloud Music mit WeChat Moments So teilen Sie NetEase Cloud Music mit WeChat Moments_Tutorial zum Teilen von NetEase Cloud Music mit WeChat Moments Mar 25, 2024 am 11:41 AM

1. Zuerst rufen wir NetEase Cloud Music auf und klicken dann auf die Software-Homepage-Oberfläche, um die Song-Wiedergabeoberfläche aufzurufen. 2. Suchen Sie dann in der Song-Wiedergabeoberfläche die Schaltfläche für die Freigabefunktion oben rechts, wie im roten Feld in der Abbildung unten gezeigt, klicken Sie, um den Freigabekanal im Freigabekanal auszuwählen, und klicken Sie auf die Option „Teilen für“. Wählen Sie unten den ersten Eintrag „WeChat Moments“ aus, mit dem Sie Inhalte für WeChat Moments freigeben können.

So teilen Sie Dateien mit Freunden auf Baidu Netdisk So teilen Sie Dateien mit Freunden auf Baidu Netdisk Mar 25, 2024 pm 06:52 PM

Vor kurzem hat der Baidu Netdisk Android-Client eine neue Version 8.0.0 eingeführt. Diese Version bringt nicht nur viele Änderungen, sondern fügt auch viele praktische Funktionen hinzu. Am auffälligsten ist unter anderem die Verbesserung der Ordnerfreigabefunktion. Jetzt können Benutzer ganz einfach Freunde einladen, beizutreten und wichtige Dateien im Beruf und im Privatleben zu teilen, was eine bequemere Zusammenarbeit und gemeinsame Nutzung ermöglicht. Wie teilen Sie die Dateien, die Sie benötigen, mit Ihren Freunden? Ich hoffe, dass Ihnen der Herausgeber dieser Website weiterhelfen kann. 1) Öffnen Sie die Baidu Cloud APP, wählen Sie zuerst den entsprechenden Ordner auf der Startseite aus und klicken Sie dann auf das Symbol [...] in der oberen rechten Ecke der Benutzeroberfläche (wie unten gezeigt). 2) Klicken Sie dann auf [+]. Klicken Sie auf die Spalte „Gemeinsame Mitglieder“ 】 und markieren Sie abschließend alle

Teilen des Mango TV-Mitgliedskontos 2023 Teilen des Mango TV-Mitgliedskontos 2023 Feb 07, 2024 pm 02:27 PM

Mango TV bietet verschiedene Arten von Filmen, Fernsehserien, Varietés und anderen Ressourcen, und Benutzer können frei wählen, ob sie diese ansehen möchten. Mango TV-Mitglieder können nicht nur alle VIP-Dramen ansehen, sondern auch die höchste Bildqualität einstellen, damit Benutzer die Dramen gerne ansehen können. Nachfolgend stellt Ihnen der Herausgeber einige kostenlose Mango TV-Mitgliedskonten vor, die Sie nutzen können. Beeilen Sie sich und werfen Sie einen Blick darauf Schau mal. Kostenloses Teilen des neuesten Mitgliedskontos von Mango TV 2023: Hinweis: Dies sind die neuesten gesammelten Mitgliedskonten. Sie können sich anmelden und diese direkt verwenden. Ändern Sie das Passwort nicht nach Belieben. Kontonummer: 13842025699 Passwort: qds373 Kontonummer: 15804882888 Passwort: evr6982 Kontonummer: 13330925667 Passwort: jgqae Kontonummer: 1703

So teilen Sie einen WLAN-Hotspot im Win7-System So teilen Sie einen WLAN-Hotspot im Win7-System Jul 01, 2023 pm 01:53 PM

Wie teile ich einen WLAN-Hotspot im Win7-System? Nachdem unser Computer mit dem Netzwerk verbunden ist, kann er auch drahtlose Netzwerke gemeinsam nutzen. Viele Benutzer möchten das Netzwerk ihres Computers zur Nutzung mit ihren Mobiltelefonen teilen. Viele Freunde wissen nicht, wie man im Detail vorgeht. Der Editor unten hat die Schritte zum Teilen von WLAN-Hotspots im Win7-System zusammengestellt. Wenn Sie interessiert sind, folgen Sie dem Editor und lesen Sie weiter! Schritte zum Teilen des WLAN-Hotspots im Win7-System 1. Wenn Sie den WLAN-Hotspot aktivieren möchten, benötigen Sie zunächst eine WLAN-Karte. Wenn Sie einen PC haben, können Sie ein tragbares WLAN zum Teilen kaufen WLAN, das hier nicht beschrieben wird. Drücken Sie zunächst die Windows-Taste auf der Tastatur, um das Startmenü zu öffnen

Was sind die Aktivierungsschlüssel für Win7 Enterprise Edition? Was sind die Aktivierungsschlüssel für Win7 Enterprise Edition? Jul 09, 2023 pm 03:01 PM

Haben Sie den neuesten Aktivierungsschlüssel für Win7 Enterprise Edition? Wenn Sie die offizielle Win7-Enterprise-Version installieren, werden Sie aufgefordert, diese mit dem Windows7-Enterprise-Produktschlüssel zu aktivieren, da sie sonst nicht ordnungsgemäß funktioniert. Der Editor teilt Ihnen also einige Aktivierungskennwörter für die Win7-Enterprise-Version mit. Werfen wir einen Blick darauf. Q3VMJ-TMJ3M-99RF9-CVPJ3-Q7VF3KGMPT-GQ6XF-DM3VM-HW6PR-DX9G8MT39G-9HYXX-J3 6JQ

Teilen Sie mehrere .NET-Open-Source-KI- und LLM-bezogene Projekt-Frameworks Teilen Sie mehrere .NET-Open-Source-KI- und LLM-bezogene Projekt-Frameworks May 06, 2024 pm 04:43 PM

Die Entwicklung von Technologien der künstlichen Intelligenz (KI) ist heute in vollem Gange und sie haben in verschiedenen Bereichen großes Potenzial und Einfluss gezeigt. Heute wird Dayao Ihnen 4 .NET Open-Source-KI-Modell-LLM-bezogene Projekt-Frameworks vorstellen und hofft, Ihnen einige Referenzen zu geben. https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel ist ein Open-Source-Softwareentwicklungskit (SDK), das für die Integration großer Sprachmodelle (LLM) wie OpenAI und Azure entwickelt wurde

Wie sind die Berufsaussichten von C#? Wie sind die Berufsaussichten von C#? Oct 19, 2023 am 11:02 AM

Ganz gleich, ob Sie Anfänger oder erfahrener Profi sind: Die Beherrschung von C# ebnet den Weg für Ihre Karriere.

See all articles