C#多线程传递参数及任务用法示例

前端技术 2023/09/07 C#

本文实例讲述了C#多线程传递参数及任务用法。分享给大家供大家参考,具体如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace ConsoleSample
{
  class Program
  {
    static void Main(string[] args)
    {
      Console.WriteLine(\"这是主线程\");
      DateTime dtStart = DateTime.Now;
      for (int i = 0; i < 100; i++)
      {
        Student s = new Student();
        s.name = \"张三\" + i;
        s.sex = \"男\";
        s.age = 28;
        Thread t = new Thread(ThreadWithParas);
        t.Start(s); //要给线程传递数据,需某个存储数据的类或结构
      }
      DateTime dtEnd = DateTime.Now;
      TimeSpan span = (TimeSpan)(dtEnd - dtStart);
      Console.ReadLine();
      Console.WriteLine(\"运行的时间 \" + span.Milliseconds);
      Console.ReadLine();
    }
    static void ThreadWithParas(object o)
    {
      Student s = o as Student;
      Console.WriteLine(\"这是分线程\" + Thread.CurrentThread.ManagedThreadId + \" \" + s.name + \"---\" + s.sex + \"---\" + s.age);
    }
  }
  public class Student
  {
    public string name;
    public string sex;
    public int age;
  }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace ConsoleSample
{
  class Program
  {
    static void Main(string[] args)
    {
      //任务层次结构
      Task parent = new Task(ParentTask);
      parent.Start();
      Thread.Sleep(2000);
      Console.WriteLine(parent.Status);
      Thread.Sleep(4000);
      Console.WriteLine(parent.Status);
      Console.ReadLine();
    }
    //父任务
    static void ParentTask()
    {
      Console.WriteLine(\"task id {0}\", Task.CurrentId);
      Task child = new Task(ChildTask); // , TaskCreationOptions.DetachedFromParent);
      child.Start();
      Thread.Sleep(1000);
      Console.WriteLine(\"parent started child\");
      // Thread.Sleep(3000);
    }
    //子任务
    static void ChildTask()
    {
      Console.WriteLine(\"child\");
      Thread.Sleep(5000);
      Console.WriteLine(\"child finished\");
    }
  }
}

更多关于C#相关内容感兴趣的读者可查看本站专题:《C#常见控件用法教程》、《WinForm控件用法总结》、《C#数据结构与算法教程》、《C#面向对象程序设计入门教程》及《C#程序设计之线程使用技巧总结》

希望本文所述对大家C#程序设计有所帮助。

本文地址:https://www.stayed.cn/item/18148

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。