This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
{
"cells": [
"attachments": {},
"cell_type": "markdown",
"metadata": {
"dotnet_interactive": {
"language": "csharp"
},
"polyglot_notebook": {
"kernelName": "csharp"
}
"source": [
"Thread 使用\n",
"==============================\n",
"学习 Thread,执行各种 Thread 操作。\n",
"特别注意:NoteBook 本身的运行线程是后台线程,不会等待由其创建的线程执行结束。与控制台等应用有区别。 "
]
"> 全局设置,语言设置、Nuget包引用、空间引用等"
"cell_type": "code",
"execution_count": 26,
"vscode": {
"languageId": "polyglot-notebook"
"outputs": [],
"//全局设置\n",
"#!csharp\n",
"using System.Threading;\n",
"using System.Threading.Channels;\n",
"using System.Threading.Tasks;"
"> 创建托管线程,注意:NoteBook 本身的运行线程是后台线程,不会等待由其创建的线程执行结束,这点与控制台等应用有区别。 "
"execution_count": 49,
"outputs": [
"name": "stdout",
"output_type": "stream",
"text": [
"NoteBook线程,线程ID:6 \n",
"NoteBook线程,线程名:.NET ThreadPool Worker \n",
"NoteBook线程,线程池线程:是的 \n",
"NoteBook线程,后台线:是的 \n"
],
"//显示 NoteBook 执行线程信息\n",
"var desc = \"NoteBook线程,\";\n",
"Console.WriteLine($\"{desc}线程ID:{Thread.CurrentThread.ManagedThreadId} \");\n",
"Console.WriteLine($\"{desc}线程名:{Thread.CurrentThread.Name} \");\n",
"Console.WriteLine($\"{desc}线程池线程:{(Thread.CurrentThread.IsThreadPoolThread ? \"是的\" : \"否\")} \");\n",
"Console.WriteLine($\"{desc}后台线:{(Thread.CurrentThread.IsBackground ? \"是的\" : \"不是\")} \");"
"execution_count": 60,
"线程:新线程,已经执行!\n",
"线程:NoteBook线程,, 执行结束!\n"
"ThreadStart start = ()=>\n",
"{\n",
" Console.WriteLine($\"线程:{Thread.CurrentThread.Name},已经执行!\");\n",
"};\n",
"\n",
"var t = new Thread(start)\n",
" Name=\"新线程\"\n",
"t.Start();\n",
"//如果不join,新创建的线程,可能还没来得及执行,就随着Notebook线程的结束而结束了。\n",
"t.Join();\n",
"Console.WriteLine($\"线程:{desc}, 执行结束!\");\n"
"kernelspec": {
"display_name": ".NET (C#)",
"language": "C#",
"name": ".net-csharp"
"kernelInfo": {
"defaultKernelName": "csharp",
"items": [
"aliases": [
"c#",
"C#"
"languageName": "C#",
"name": "csharp"
"frontend"
"languageName": null,
"name": "vscode"
"powershell"
"languageName": "PowerShell",
"name": "pwsh"
"aliases": [],
"name": ".NET"
"f#",
"F#"
"languageName": "F#",
"name": "fsharp"
"languageName": "HTML",
"name": "html"
"languageName": "KQL",
"name": "kql"
"languageName": "Mermaid",
"name": "mermaid"
"languageName": "SQL",
"name": "sql"
"name": "value"
"nbformat": 4,
"nbformat_minor": 2