|
|
@ -0,0 +1,225 @@
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
"attachments": {},
|
|
|
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
|
|
|
"metadata": {
|
|
|
|
|
|
|
|
"dotnet_interactive": {
|
|
|
|
|
|
|
|
"language": "csharp"
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
"polyglot_notebook": {
|
|
|
|
|
|
|
|
"kernelName": "csharp"
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
"source": [
|
|
|
|
|
|
|
|
"Thread 使用\n",
|
|
|
|
|
|
|
|
"==============================\n",
|
|
|
|
|
|
|
|
"学习 Thread,执行各种 Thread 操作。\n",
|
|
|
|
|
|
|
|
"特别注意:NoteBook 本身的运行线程是后台线程,不会等待由其创建的线程执行结束。与控制台等应用有区别。 "
|
|
|
|
|
|
|
|
]
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
"attachments": {},
|
|
|
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
|
|
|
"metadata": {
|
|
|
|
|
|
|
|
"dotnet_interactive": {
|
|
|
|
|
|
|
|
"language": "csharp"
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
"polyglot_notebook": {
|
|
|
|
|
|
|
|
"kernelName": "csharp"
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
"source": [
|
|
|
|
|
|
|
|
"> 全局设置,语言设置、Nuget包引用、空间引用等"
|
|
|
|
|
|
|
|
]
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
|
|
|
"execution_count": 26,
|
|
|
|
|
|
|
|
"metadata": {
|
|
|
|
|
|
|
|
"dotnet_interactive": {
|
|
|
|
|
|
|
|
"language": "csharp"
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
"polyglot_notebook": {
|
|
|
|
|
|
|
|
"kernelName": "csharp"
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
"vscode": {
|
|
|
|
|
|
|
|
"languageId": "polyglot-notebook"
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
"outputs": [],
|
|
|
|
|
|
|
|
"source": [
|
|
|
|
|
|
|
|
"//全局设置\n",
|
|
|
|
|
|
|
|
"#!csharp\n",
|
|
|
|
|
|
|
|
"using System.Threading;\n",
|
|
|
|
|
|
|
|
"using System.Threading.Channels;\n",
|
|
|
|
|
|
|
|
"using System.Threading.Tasks;"
|
|
|
|
|
|
|
|
]
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
"attachments": {},
|
|
|
|
|
|
|
|
"cell_type": "markdown",
|
|
|
|
|
|
|
|
"metadata": {
|
|
|
|
|
|
|
|
"dotnet_interactive": {
|
|
|
|
|
|
|
|
"language": "csharp"
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
"polyglot_notebook": {
|
|
|
|
|
|
|
|
"kernelName": "csharp"
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
"source": [
|
|
|
|
|
|
|
|
"> 创建托管线程,注意:NoteBook 本身的运行线程是后台线程,不会等待由其创建的线程执行结束,这点与控制台等应用有区别。 "
|
|
|
|
|
|
|
|
]
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
|
|
|
"execution_count": 49,
|
|
|
|
|
|
|
|
"metadata": {
|
|
|
|
|
|
|
|
"dotnet_interactive": {
|
|
|
|
|
|
|
|
"language": "csharp"
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
"polyglot_notebook": {
|
|
|
|
|
|
|
|
"kernelName": "csharp"
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
"vscode": {
|
|
|
|
|
|
|
|
"languageId": "polyglot-notebook"
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
"outputs": [
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
"name": "stdout",
|
|
|
|
|
|
|
|
"output_type": "stream",
|
|
|
|
|
|
|
|
"text": [
|
|
|
|
|
|
|
|
"NoteBook线程,线程ID:6 \n",
|
|
|
|
|
|
|
|
"NoteBook线程,线程名:.NET ThreadPool Worker \n",
|
|
|
|
|
|
|
|
"NoteBook线程,线程池线程:是的 \n",
|
|
|
|
|
|
|
|
"NoteBook线程,后台线:是的 \n"
|
|
|
|
|
|
|
|
]
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
"source": [
|
|
|
|
|
|
|
|
"//显示 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 ? \"是的\" : \"不是\")} \");"
|
|
|
|
|
|
|
|
]
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
|
|
|
"execution_count": 60,
|
|
|
|
|
|
|
|
"metadata": {
|
|
|
|
|
|
|
|
"dotnet_interactive": {
|
|
|
|
|
|
|
|
"language": "csharp"
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
"polyglot_notebook": {
|
|
|
|
|
|
|
|
"kernelName": "csharp"
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
"vscode": {
|
|
|
|
|
|
|
|
"languageId": "polyglot-notebook"
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
"outputs": [
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
"name": "stdout",
|
|
|
|
|
|
|
|
"output_type": "stream",
|
|
|
|
|
|
|
|
"text": [
|
|
|
|
|
|
|
|
"线程:新线程,已经执行!\n",
|
|
|
|
|
|
|
|
"线程:NoteBook线程,, 执行结束!\n"
|
|
|
|
|
|
|
|
]
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
"source": [
|
|
|
|
|
|
|
|
"ThreadStart start = ()=>\n",
|
|
|
|
|
|
|
|
"{\n",
|
|
|
|
|
|
|
|
" Console.WriteLine($\"线程:{Thread.CurrentThread.Name},已经执行!\");\n",
|
|
|
|
|
|
|
|
"};\n",
|
|
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
|
|
"var t = new Thread(start)\n",
|
|
|
|
|
|
|
|
"{\n",
|
|
|
|
|
|
|
|
" Name=\"新线程\"\n",
|
|
|
|
|
|
|
|
"};\n",
|
|
|
|
|
|
|
|
"t.Start();\n",
|
|
|
|
|
|
|
|
"//如果不join,新创建的线程,可能还没来得及执行,就随着Notebook线程的结束而结束了。\n",
|
|
|
|
|
|
|
|
"t.Join();\n",
|
|
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
|
|
"Console.WriteLine($\"线程:{desc}, 执行结束!\");\n"
|
|
|
|
|
|
|
|
]
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
"metadata": {
|
|
|
|
|
|
|
|
"kernelspec": {
|
|
|
|
|
|
|
|
"display_name": ".NET (C#)",
|
|
|
|
|
|
|
|
"language": "C#",
|
|
|
|
|
|
|
|
"name": ".net-csharp"
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
"polyglot_notebook": {
|
|
|
|
|
|
|
|
"kernelInfo": {
|
|
|
|
|
|
|
|
"defaultKernelName": "csharp",
|
|
|
|
|
|
|
|
"items": [
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
"aliases": [
|
|
|
|
|
|
|
|
"c#",
|
|
|
|
|
|
|
|
"C#"
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
"languageName": "C#",
|
|
|
|
|
|
|
|
"name": "csharp"
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
"aliases": [
|
|
|
|
|
|
|
|
"frontend"
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
"languageName": null,
|
|
|
|
|
|
|
|
"name": "vscode"
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
"aliases": [
|
|
|
|
|
|
|
|
"powershell"
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
"languageName": "PowerShell",
|
|
|
|
|
|
|
|
"name": "pwsh"
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
"aliases": [],
|
|
|
|
|
|
|
|
"name": ".NET"
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
"aliases": [
|
|
|
|
|
|
|
|
"f#",
|
|
|
|
|
|
|
|
"F#"
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
"languageName": "F#",
|
|
|
|
|
|
|
|
"name": "fsharp"
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
"aliases": [],
|
|
|
|
|
|
|
|
"languageName": "HTML",
|
|
|
|
|
|
|
|
"name": "html"
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
"aliases": [],
|
|
|
|
|
|
|
|
"languageName": "KQL",
|
|
|
|
|
|
|
|
"name": "kql"
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
"aliases": [],
|
|
|
|
|
|
|
|
"languageName": "Mermaid",
|
|
|
|
|
|
|
|
"name": "mermaid"
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
"aliases": [],
|
|
|
|
|
|
|
|
"languageName": "SQL",
|
|
|
|
|
|
|
|
"name": "sql"
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
"aliases": [],
|
|
|
|
|
|
|
|
"name": "value"
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
]
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
"nbformat": 4,
|
|
|
|
|
|
|
|
"nbformat_minor": 2
|
|
|
|
|
|
|
|
}
|