C#线程:初学者练习

时间:2012-12-14 22:20:52

标签: c# multithreading

到目前为止,我一直在尝试通过在项目中立即实现线程来掌握线程。我一直试图这样做很长一段时间。但这没有产生任何结果,也没有给我任何线程经验。尝试给我的唯一一点就是C#中的线程有很多重要的改进。

我找不到任何关于线程的简单练习。我正在寻找你必须制作不同简单的控制台应用程序的练习。我正在寻找简单的练习,这样我就可以了解在处理线程时如何工作并掌握这个想法。我看过一本难以编程的练习书随着问题的数量变得越来越难。我正在寻找类似的东西。之后我将继续使用更复杂的东西并尝试在我的项目中添加线程(使用Windows窗体制作)。

在哪里可以找到有关C#中线程的练习/练习册?

编辑:

我不是在寻找任何教程 - 我可以自己找到它们。我只在寻找练习和练习。如果没有这样的练习,请告诉我。

3 个答案:

答案 0 :(得分:7)

简单练习:

1)更改有效的代码(通过示例学习)

  • 打开任何教程
  • 查找代码示例
  • 使用代码示例,查看哪些有效,哪些无效

2)回答关于SO的问题(通过教学学习)

  • 找到一个有趣的问题
  • 回答(你应该做一个研究来做这件事)
  • 与其他用户交谈和互动

答案 1 :(得分:4)

Joseph Albahari有一篇很棒的文章叫Threading in C#。这篇关于开始学习C#中的线程的博客文章非常酷。约瑟夫清楚地解释道:

  • 简介和概念
  • 加入和睡觉
  • 线程如何运作
  • 创建和启动线程
  • 线程池

并在Codeproject中查看this文章。

  • 使用入门

您可以通过实例化Thread对象并调用来创建和启动新线程 它的Start方法。 Thread最简单的构造函数需要ThreadStart委托: 一个无参数的方法,指示执行应该从哪里开始。

using System;
using System.Threading;

class ThreadTest
{
   static void Main()
   {
      Thread t = new Thread (WriteY); // Kick off a new thread
      t.Start(); // running WriteY()
      // Simultaneously, do something on the main thread.
      for (int i = 0; i < 1000; i++) Console.Write ("x");
   }
   static void WriteY()
   {
      for (int i = 0; i < 1000; i++) Console.Write ("y");
      }
}

// Output:
xxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
...

如果您想深入学习线程,请获取C# 4.0 in a Nutshell

的副本

答案 2 :(得分:-1)

线程非常简单。以下是有关它的热门链接:http://www.albahari.com/threading/

基础:

创建一个返回void且不带参数的方法。像这样:

private void MyThreadMethod()
{
    //Some code here.
}

要在线程中调用该方法,只需在表单上的按钮中执行此操作。

var thread = new Thread(new ThreadStart(MyThreadMethod));
thread.Start();

这将创建一个线程并将其启动并运行MyThreadMethod中的代码。

现在,魔鬼在细节中。线程安全和线程管理是线程和多任务的真正艺术。另一件需要考虑的事情是Threads vs Tasks,它们更加用户友好。