C# ビデオ チュートリアルに関するリソースの共有
「C# チュートリアル」は、C# 言語の入門コースです。コースでは、.NET プラットフォームと C# の基本的な概念から始まり、C# 開発の基本的な構文、簡単なプログラムについて詳しく説明します。ロジック、Visual Studio ツールの使用スキル、一般的に使用されるツールの実装。同時に、コース関連の演習やプログラミング演習を通じて、学生が C# 言語にすぐに慣れることができるようにしたいと考えています。
コース再生アドレス: http://www.php.cn/course/84.html
先生の教え方:
先生の講義はシンプルかつ奥深く、明瞭です論理的思考力を使用して生徒の注意を引き、理性を使用して教室での指導プロセスを制御することで、層ごとに連動し、厳密な議論と厳密な構造を組織化して分析します。教師の講義を聞くことで、学生は知識を学ぶだけでなく、思考のトレーニングも受け、教師の厳格な学問的態度に影響され、影響を受けます。 このビデオの中で最も難しい部分は、C# マルチスレッドです:
。
1. スレッドを使用する理由
1. スレッドを使用すると、コードを他のコードから分離し、アプリケーションの信頼性を向上させることができます。 2. スレッドを使用してコーディングを簡素化できます。 3. スレッドを使用して同時実行を実現できます。 2. 基本知識 1. プロセスとスレッド: オペレーティング システム実行プログラムの基本単位として、プロセスはアプリケーションのリソースを所有します。プロセスのリソースはスレッドによって共有されます。独自のリソースではありません。 2. フォアグラウンド スレッドとバックグラウンド スレッド: Thread クラスを通じて作成された新しいスレッドは、デフォルトでフォアグラウンド スレッドになります。すべてのフォアグラウンド スレッドが閉じられると、すべてのバックグラウンド スレッドも例外をスローせずに直接終了されます。 3. サスペンド (サスペンド) とウェイクアップ (レジューム): スレッドの実行順序とプログラムの実行は予測できないため、サスペンドとウェイクアップの使用はデッドロックになりやすいため、できるだけ使用しないようにする必要があります。実際のアプリケーションでは。 4. スレッドのブロック: スレッドが終了するまで呼び出し元のスレッドをブロックします。 5. スレッドを終了します: 中止: ThreadAbortException 例外をスローして、スレッドを終了します。割り込み: ThreadInterruptException 例外をスローしてスレッドを終了し、例外をキャッチすることで実行を続行できます。 6. スレッドの優先順位: AboveNormal BelowNormal 最高最低 通常、デフォルトは通常です。 3. スレッドの使用 スレッド関数は、パラメーターなしで渡すことも、パラメーターを使用して渡すこともできます (パラメーターは 1 つだけ)。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); } } }
4. スレッドプール
スレッドの作成と破棄には一定量のオーバーヘッドが必要なため、スレッドを過剰に使用するとメモリリソースの無駄が発生するため、パフォーマンスを考慮してスレッドプールの概念が導入されました。スレッド プールはリクエスト キューを維持し、スレッド プール コードはキューからタスクを抽出し、実行のためにスレッド プール内のスレッドに委任します。そのため、スレッドは実行直後に破棄されません。バックグラウンドやスレッドの作成と破棄にかかるコストを削減できます。 スレッド プール スレッドのデフォルトはバックグラウンド スレッド (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); } } }
5. タスククラス
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; } } }
1 つのタスクが完了すると、スレッドをブロックせずに別のタスクを開始できます。
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; } } }
6. デリゲートの非同期実行
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); } } }
イベントクラスには終了状態と非終了状態の2つの状態があり、終了状態でWaitOneを呼び出すと成功を要求でき、Setを通じて時間状態を終了状態に設定できます。
1) AutoResetEvent(自動リセットイベント)
2) ManualResetEvent(手動リセットイベント)
6) Semaphore(セマフォ)
セマフォはカーネルオブジェクトが保持するint変数で、0の場合はスレッドがブロックされます。 、0 より大きい場合はブロック解除されます。セマフォ上の待機スレッドのブロックが解除されると、セマフォのカウントは +1 されます。
スレッドはWaitOneを通じてセマフォを1つ減らし、Releaseを通じてセマフォを1つ増やします。使い方はとても簡単です。
7) Mutex(ミューテックス)
専用のリソースで、使い方はセマフォと似ています。
8) クロスプロセス同期
システムレベルの同期は、同期オブジェクトの名前を設定することで実現できます。異なるアプリケーションは、同期オブジェクトの名前を通じて異なる同期オブジェクトを識別します。
以上がC# ビデオ チュートリアルに関するリソースの共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Quark Netdisk と Baidu Netdisk は非常に便利なストレージ ツールですが、多くのユーザーはこれら 2 つのソフトウェアが相互運用可能かどうかを疑問に思っています。 Quark NetdiskをBaidu Netdiskに共有するにはどうすればよいですか?このサイトでは、QuarkネットワークディスクファイルをBaiduネットワークディスクに保存する方法をユーザーに詳しく紹介します。 Quark Network Disk から Baidu Network Disk にファイルを保存する方法 方法 1. Quark Network Disk から Baidu Network Disk にファイルを転送する方法を知りたい場合は、まず Quark Network Disk に保存する必要があるファイルをダウンロードして、次に開きますBaidu Network Disk クライアントを起動し、圧縮ファイルを保存するフォルダーを選択し、ダブルクリックしてフォルダーを開きます。 2. フォルダーを開いたら、ウィンドウ左上の「アップロード」をクリックします。 3. コンピュータ上でアップロードする必要がある圧縮ファイルを見つけ、クリックして選択します。

1. まず、NetEase Cloud Music に入り、ソフトウェアのホームページ インターフェイスをクリックして、曲の再生インターフェイスに入ります。 2. 次に、曲の再生インターフェイスで、下の図の赤いボックスに示すように、右上隅にある共有機能ボタンを見つけて、クリックして共有チャンネルを選択し、共有チャンネルで「共有先」オプションをクリックします。下部にある [WeChat Moments] を選択すると、コンテンツを WeChat Moments に共有できます。

最近、Baidu Netdisk Android クライアントの新しいバージョン 8.0.0 がリリースされ、このバージョンには多くの変更が加えられただけでなく、多くの実用的な機能も追加されました。その中でも最も目を引くのがフォルダー共有機能の強化だ。ユーザーは簡単に友人を招待して仕事や生活で重要なファイルを共有できるようになり、より便利なコラボレーションと共有が実現します。では、友達と共有する必要があるファイルをどのように共有すればよいでしょうか? 以下では、このサイトの編集者が詳しく説明します。 1) Baidu Cloud APP を開き、まずホームページ上の関連フォルダーをクリックして選択し、次にインターフェイスの右上隅にある [...] アイコンをクリックします (以下を参照) 2) 次に、[+] をクリックします。 「共有メンバー」欄】を選択し、最後に全てにチェックを入れます

Mango TV には、さまざまな種類の映画、テレビシリーズ、バラエティ番組などのリソースがあり、ユーザーはそれらを自由に選択して視聴できます。 Mango TV 会員はすべての VIP ドラマを視聴できるだけでなく、ユーザーが楽しくドラマを視聴できるように最高解像度の画質を設定することもできます。以下では、編集者がユーザーが使用できる無料の Mango TV 会員アカウントをいくつか紹介します。急いで見てください。見てください。 Mango TV 最新のメンバー アカウント無料共有 2023: 注: これらは収集された最新のメンバー アカウントです。直接ログインして使用できます。パスワードを自由に変更しないでください。口座番号: 13842025699 パスワード: qds373 口座番号: 15804882888 パスワード: evr6982 口座番号: 13330925667 パスワード: jgqae 口座番号: 1703

win7 エンタープライズ エディションの最新のアクティベーション キーをお持ちですか?公式の win7 エンタープライズ バージョンをインストールする場合、Windows7 エンタープライズ プロダクト キーを使用してライセンス認証するように求められます。そうでないと、正しく動作しません。そこで、エディターはいくつかの win7 エンタープライズ バージョンのアクティベーション パスワードを共有します。見てみましょう。 Q3VMJ-TMJ3M-99RF9-CVPJ3-Q7VF3KGMPT-GQ6XF-DM3VM-HW6PR-DX9G8MT39G-9HYXX-J3V3Q-RPXJB-RQ6D79JBBV-7Q7P7-CTDB7-KYBKG-X8HHCP72QK-2Y3B8-YDHDV-29DQB-QKWWM6 JQ

現在、人工知能(AI)技術の開発は本格化しており、さまざまな分野で大きな可能性と影響力を発揮しています。本日、Dayao は、参考にしていただけるよう、4 つの .NET オープン ソース AI モデル LLM 関連プロジェクト フレームワークを共有します。 https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel は、OpenAI、Azure などの大規模言語モデル (LLM) を統合するように設計されたオープン ソース ソフトウェア開発キット (SDK) です。

タイトル: Discuz WeChat の共有が表示されない問題を解決するには、具体的なコード例が必要です モバイル インターネットの発展に伴い、WeChat は人々の日常生活に欠かせないものになりました。 Web サイト開発では、ユーザー エクスペリエンスを向上させ、Web サイトの露出を拡大するために、多くの Web サイトに WeChat 共有機能が統合され、ユーザーが Web サイトのコンテンツを Moments または WeChat グループに簡単に共有できるようになります。ただし、Discuz などのオープンソース フォーラム システムを使用すると、WeChat 共有が表示されないという問題が発生し、ユーザー エクスペリエンスに一定の困難が生じることがあります。
