2010-09-30 109 views
14

我希望能够很好地理解C#中的多线程。我读过一些文章,如Joseph Albahari's tutorials,这些文章解释了这些概念,但正如你所知道的那样,无论你读了多少,如果你不练习,大部分都会变成垃圾。我需要一些具有指导性和实用性的与现实生活实践相关的代码示例,而不是一些打印某些行的示例。你有什么建议吗?练习建议,以帮助学习C#中的多线程#

回答

4

伙计家伙我想我找到了一个很好的网站:planet-source-code.com。在“线程”关键字的.Net代码搜索似乎返回一些很好的例子,像

  • 多线程文件夹同步
  • 多线程TCP服务器
  • 背景文件下载
  • 异步。插座
  • P2P文件共享
  • 简单的POP3控制台邮件检查器和其他许多人!

yay!

+0

我认为你应该修复这个链接:删除“.com”后的破折号。 – AlexSavAlexandrov 2012-12-14 21:44:08

+0

好吧,这样做。谢谢哥们。 – aslisabanci 2012-12-15 15:48:26

2

如果你正在做任何winforms或wpf开发,当你试图在UI线程中做“东西”时,你会很快遇到问题。

假设您需要读取和解析大型(2GB)XML文件的内容。如果工作是在UI线程中执行的,则界面将挂起直到工作完成。相反,如果您要在工作线程中正确执行工作,那么您可以通过消息传递让UI保持响应,并让用户知道您当前正在做什么(状态栏(唉))或以文本形式显示您的内容做“阅读XML”等)

一个很好的简单例子就是制作一个示例应用程序,让它触发一个BackgroundWorker来处理背景中的一些任意工作(它甚至可能是Thread.Sleep(10000 ),或者像那样的小事。)

我想说这是关于这个问题的许多好的起点之一。

http://msdn.microsoft.com/en-us/library/cc221403%28VS.95%29.aspx

+0

我主要在后台通信领域,使用套接字和Web服务。但感谢您的建议,我会从它开始:) – aslisabanci 2010-09-30 19:39:38

2

site有,我觉得这是不错的实践应用程序实现一些简单的应用程序。但是,似乎链接到源代码被破坏。尽管如此,我认为这些应用程序代表了非常实用的例子。一些包括:

  • 桌面搜索
  • 下载管理器
  • FTP客户端
  • 文件压缩
  • 多个RSS
+0

是啊,这是我一直在寻找。太糟糕了消息来源:( – aslisabanci 2010-09-30 20:38:18

3

某种类型的随机数字运算的是一个很好的测试为了这。我通过编写一个主要的数字查找器来教授自己的线程,然后将我的“搜索”数字分成块并使用线程来处理每个数据块。

这让我设置块大小,使用的线程数量,发射线程之间的等待时间等一些变量来测试这些如何影响性能。