<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta name="generator" content="pdf2htmlEX">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<link rel="stylesheet" href="https://static.pudn.com/base/css/base.min.css">
<link rel="stylesheet" href="https://static.pudn.com/base/css/fancy.min.css">
<link rel="stylesheet" href="https://static.pudn.com/prod/directory_preview_static/622b89053d2fbb0007d0b915/raw.css">
<script src="https://static.pudn.com/base/js/compatibility.min.js"></script>
<script src="https://static.pudn.com/base/js/pdf2htmlEX.min.js"></script>
<script>
try{
pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});
}catch(e){}
</script>
<title></title>
</head>
<body>
<div id="sidebar" style="display: none">
<div id="outline">
</div>
</div>
<div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/622b89053d2fbb0007d0b915/bg1.jpg"><div class="c x0 y1 w2 h2"><div class="t m0 x1 h3 y2 ff1 fs0 fc0 sc0 ls0 ws0">C# <span class="ff2 sc1">多线程基础</span>,<span class="ff2 sc1">仅以此心得献给那些渴望学习多线程的朋友</span></div><div class="t m0 x1 h4 y3 ff2 fs1 fc1 sc0 ls0 ws0">序<span class="ff3">:</span></div><div class="t m0 x1 h4 y4 ff3 fs1 fc1 sc0 ls0 ws0"> <span class="_ _0"></span> <span class="_ _1"></span><span class="ff2">我是自学的<span class="_ _2"> </span></span>C#,<span class="ff2">在看到多线<span class="_ _0"></span>程一章时<span class="_ _0"></span></span>,<span class="_ _0"></span><span class="ff2">郁闷了</span>,<span class="_ _0"></span><span class="ff2">搞不懂</span>,<span class="_ _0"></span><span class="ff2">很难理解吧<span class="_ _0"></span></span>...<span class="_ _0"></span><span class="ff2">自认为有软件天赋<span class="_ _1"></span></span>,<span class="ff2">却没看<span class="_ _0"></span>懂</span>...<span class="ff2">唉<span class="_ _0"></span></span>...</div><div class="t m0 x1 h4 y5 ff2 fs1 fc1 sc0 ls0 ws0">自信心被打击了<span class="ff3">,</span>到网上查了很多的资料<span class="ff3">,</span>包括<span class="_ _3"> </span><span class="ff3">MSDN</span></div><div class="t m0 x1 h4 y6 ff2 fs1 fc1 sc0 ls0 ws0">上也查过资料<span class="ff3">,</span>可惜还是没搞懂多线程<span class="ff3">...</span></div><div class="t m0 x1 h4 y7 ff3 fs1 fc1 sc0 ls0 ws0"> <span class="_ _0"></span> <span class="_ _0"></span><span class="ff2">于是</span>,<span class="ff2">硬着头皮一<span class="_ _0"></span>遍一遍的看多<span class="_ _0"></span>线程那一章<span class="_ _0"></span></span>,<span class="ff2">终于在看<span class="_ _0"></span>完第<span class="_ _3"> </span></span>31<span class="_ _3"> </span><span class="ff2">遍</span>,<span class="ff2">我写出<span class="_ _0"></span>了第一个多线<span class="_ _0"></span>程程序</span>,<span class="_ _0"></span><span class="ff2">还算小有</span></div><div class="t m0 x1 h4 y8 ff2 fs1 fc1 sc0 ls0 ws0">所获<span class="ff3">,</span>鉴于对网上很多资料没办法理解<span class="ff3">(</span>因为<span class="ff3">,</span>很多资料一来就大篇大篇</div><div class="t m0 x1 h4 y9 ff2 fs1 fc1 sc0 ls0 ws0">的代码<span class="ff3">,</span>让人头晕<span class="ff3">,</span>我是这么觉得<span class="ff3">)</span>所以<span class="ff3">,</span>我自己就写了这篇心得体会<span class="ff3">,</span>希望能给大家带来些许帮助<span class="ff3">.</span></div><div class="t m0 x1 h4 ya ff2 fs1 fc1 sc0 ls0 ws0">匆忙之中<span class="ff3">,</span>错误难免<span class="ff3">,</span>欢迎指正<span class="ff3">,</span>共同进步<span class="ff3">.</span></div><div class="t m0 x1 h4 yb ff2 fs1 fc1 sc0 ls0 ws0">正文<span class="ff3">:</span></div><div class="t m0 x1 h4 yc ff3 fs1 fc1 sc0 ls0 ws0"> <span class="_ _0"></span><span class="ff2">首先我要提一点<span class="_ _0"></span></span>,<span class="ff2">关于线程的基础知识<span class="_ _0"></span></span>,<span class="ff2">一个程序<span class="_ _0"></span></span>,<span class="ff2">即一个进程</span>,<span class="ff2">可以有很多个线程<span class="_ _0"></span></span>,<span class="ff2">当然<span class="_ _0"></span></span>,<span class="ff2">至少要有一个线</span></div><div class="t m0 x1 h4 yd ff2 fs1 fc1 sc0 ls0 ws0">程<span class="ff3">,</span>即主线程<span class="ff3">.</span>相信大家都知道多线程的好处吧<span class="ff3">,</span>举个书上的例子</div><div class="t m0 x1 h4 ye ff2 fs1 fc1 sc0 ls0 ws0">吧<span class="ff3">,Windows<span class="_ _3"> </span></span>在复制文件的时候<span class="_ _0"></span><span class="ff3">,</span>有个动画<span class="ff3">,</span>是在复制文件过程中进行的<span class="_ _1"></span><span class="ff3">,</span>也就是一边复制文件<span class="_ _1"></span><span class="ff3">,</span>一边播放动画<span class="_ _0"></span><span class="ff3">,</span></div><div class="t m0 x1 h4 yf ff2 fs1 fc1 sc0 ls0 ws0">这个就是很简单的多线程<span class="ff3">,</span>如果没有动画<span class="ff3">,</span>复制一个大文件的时候<span class="ff3">,</span>我们知</div><div class="t m0 x1 h4 y10 ff2 fs1 fc1 sc0 ls0 ws0">道计算<span class="_ _0"></span>机是死机<span class="_ _0"></span>了<span class="ff3">,<span class="_ _0"></span></span>还是仍<span class="_ _0"></span>然在复<span class="_ _0"></span>制呢<span class="ff3">???<span class="_ _0"></span></span>多线<span class="_ _0"></span>程就很<span class="_ _0"></span>好的解决<span class="_ _0"></span>了这个<span class="_ _0"></span>问题<span class="_ _0"></span><span class="ff3">.</span>懂了<span class="_ _0"></span>吧<span class="ff3">,</span>恩<span class="_ _0"></span><span class="ff3">,</span>很好<span class="_ _0"></span><span class="ff3">!!</span>那<span class="_ _0"></span>么<span class="ff3">,</span>我<span class="_ _0"></span>们就开</div><div class="t m0 x1 h4 y11 ff2 fs1 fc1 sc0 ls0 ws0">始吧<span class="ff3">!</span></div><div class="t m0 x1 h4 y12 ff3 fs1 fc1 sc0 ls0 ws0"> <span class="ff2">首先</span>,<span class="ff2">我们写个简单的单线程程序</span>,<span class="ff2">也就是只有程序自己创建的那个主线程</span>,<span class="ff2">没有使用多线程</span>.</div><div class="t m0 x1 h4 y13 ff2 fs1 fc1 sc0 ls0 ws0">创建<span class="_ _0"></span>一个<span class="_ _0"></span>新工程<span class="_ _1"></span><span class="ff3">,<span class="_ _0"></span></span>向窗<span class="_ _0"></span>口添<span class="_ _0"></span>加一<span class="_ _0"></span>个<span class="_ _2"> </span><span class="ff3">label<span class="_ _3"> </span></span>命名<span class="_ _0"></span>为<span class="_ _2"> </span><span class="ff3">label1;</span>我们<span class="_ _0"></span>要让<span class="_ _0"></span>程序<span class="_ _0"></span>运行<span class="_ _0"></span>时<span class="_ _2"> </span><span class="ff3">label1<span class="_ _3"> </span></span>就<span class="_ _0"></span>显示<span class="_ _0"></span>一个<span class="_ _0"></span>数字<span class="_ _1"></span><span class="ff3">,<span class="_ _0"></span></span>假设<span class="_ _0"></span>为</div><div class="t m0 x1 h4 y14 ff3 fs1 fc1 sc0 ls0 ws0">100;<span class="ff2">通常我们会直接在窗口加载事件中写<span class="_ _3"> </span></span>label1.T<span class="_ _4"></span>ext = "100";<span class="ff2">这样</span>,<span class="ff2">运行</span></div><div class="t m0 x1 h4 y15 ff3 fs1 fc1 sc0 ls0 ws0">,label1<span class="_ _3"> </span><span class="ff2">果然显示了<span class="_ _3"> </span></span>100;</div><div class="t m0 x1 h4 y16 ff2 fs1 fc1 sc0 ls0 ws0">代码如下<span class="ff3">:(</span>例<span class="_ _3"> </span><span class="ff3">1)</span></div><div class="t m0 x1 h5 y17 ff1 fs1 fc2 sc0 ls0 ws0">using<span class="fc1"> System;</span></div><div class="t m0 x1 h5 y18 ff1 fs1 fc2 sc0 ls0 ws0">using<span class="fc1"> System.Windows.Forms;</span></div><div class="t m0 x1 h5 y19 ff1 fs1 fc2 sc0 ls0 ws0">namespace<span class="fc1"> ThreadT<span class="_ _5"></span>est</span></div><div class="t m0 x1 h5 y1a ff1 fs1 fc1 sc0 ls0 ws0">{</div><div class="t m0 x1 h5 y1b ff1 fs1 fc1 sc0 ls0 ws0"> <span class="fc2">public partial class</span> <span class="fc3">Form1 : Form</span></div><div class="t m0 x1 h5 y1c ff1 fs1 fc1 sc0 ls0 ws0"> {</div><div class="t m0 x1 h5 y1d ff1 fs1 fc1 sc0 ls0 ws0"> <span class="fc2">public</span> Form1()</div><div class="t m0 x1 h5 y1e ff1 fs1 fc1 sc0 ls0 ws0"> {</div><div class="t m0 x1 h5 y1f ff1 fs1 fc1 sc0 ls0 ws0"> InitializeComponent();</div><div class="t m0 x1 h5 y20 ff1 fs1 fc1 sc0 ls0 ws0"> }</div><div class="t m0 x1 h5 y21 ff1 fs1 fc1 sc0 ls0 ws0"> <span class="fc2">private void</span> Form1_Load(<span class="fc2">object<span class="_ _0"></span></span> sender<span class="_ _5"></span>, <span class="fc3">EventArgs</span> e)</div><div class="t m0 x1 h5 y22 ff1 fs1 fc1 sc0 ls0 ws0"> {</div></div></div><div class="pi" data-data='{"ctm":[1.611850,0.000000,0.000000,1.611850,0.000000,0.000000]}'></div></div>
</body>
</html>