首页 > 编程语言 >C# start thread include Thread,Task,Async/Await,BackgroundWorker,ThreadPool,Timer,Parallel,Parallel.

C# start thread include Thread,Task,Async/Await,BackgroundWorker,ThreadPool,Timer,Parallel,Parallel.

时间:2024-08-22 20:54:56浏览次数:11  
标签:Task Thread thread void System using new Guid Parallel

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApp266
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        private int num = 0;

        //Dispatcher.BeginInvoke(new Action(() =>
        //            {
        //    lbx.Items.Add($"{++num},{Guid.NewGuid()}");
        //}));
        public MainWindow()
        {
            InitializeComponent();
            this.WindowState = System.Windows.WindowState.Maximized;
            PLinqDemo();
        }

        void PLinqDemo()
        {
            var nums = Enumerable.Range(1, 10000); 
            Dispatcher.BeginInvoke(new Action(() =>
            {
                foreach (var item in nums.AsParallel())
                {
                    lbx.Items.Add($"{item},{Guid.NewGuid()}");
                }
            }));
        }
        void LazyDemo()
        {
            Lazy<int> lazyNum = new Lazy<int>(() =>
            {
                Thread.Sleep(1000);
                return 100;
            });

            Dispatcher.BeginInvoke(new Action(() =>
            {
                lbx.Items.Add($"{lazyNum.Value},{Guid.NewGuid()}");
            }));
        }

        void ThreadLocalDemo()
        {
            ThreadLocal<int> threadLocal = new ThreadLocal<int>();
            while (++(threadLocal.Value) < 100)
            {
                Dispatcher.BeginInvoke(new Action(() =>
                {
                    lbx.Items.Add($"{threadLocal.Value},{Guid.NewGuid()}");
                }));
            }
        }

        void ParallelDemo()
        {
            var nums = Enumerable.Range(1, 1000);
            Parallel.ForEach(nums, x =>
            {
                Dispatcher.BeginInvoke(new Action(() =>
                {
                    lbx.Items.Add($"{x},{Guid.NewGuid()}");
                }));
                Thread.Sleep(20);
            });
        }

        async void AsyncAwaitDemo()
        {
            await Task.Run(() =>
            {
                while (true)
                {
                    Dispatcher.BeginInvoke(new Action(() =>
                    {
                        lbx.Items.Add($"{++num},{Guid.NewGuid()}");
                    }));
                    Thread.Sleep(200);
                }
            });
        }

        void TaskDemo()
        {
            Task.Run(() =>
            {
                while (true)
                {
                    Dispatcher.BeginInvoke(new Action(() =>
                    {
                        lbx.Items.Add($"{++num},{Guid.NewGuid()}");
                    }));
                    Thread.Sleep(200);
                }
            });
        }


        void ThreadDemo()
        {
            Thread ta = new Thread(() =>
            {
                while (true)
                {
                    Dispatcher.BeginInvoke(new Action(() =>
                    {
                        lbx.Items.Add($"{++num},{Guid.NewGuid()}");
                    }));
                    Thread.Sleep(200);
                }
            });
            ta.Start();
        }

        void SystemTimerTimer()
        {
            System.Timers.Timer tmr = new System.Timers.Timer();
            tmr.Elapsed += Tmr_Elapsed;
            tmr.Start();
        }

        private void Tmr_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            while (true)
            {
                Dispatcher.BeginInvoke(new Action(() =>
                {
                    lbx.Items.Add($"{++num},{Guid.NewGuid()}");
                }));
                Thread.Sleep(200);
            }
        }

        void ThreadPoolQueueDemo()
        {
            ThreadPool.QueueUserWorkItem(x =>
            {
                while (true)
                {
                    Dispatcher.BeginInvoke(new Action(() =>
                    {
                        lbx.Items.Add($"{++num},{Guid.NewGuid()}");
                    }));
                    Thread.Sleep(100);
                }
            });
        }

        void BackgroundWorkerDemo()
        {
            BackgroundWorker bgWorker = new BackgroundWorker();
            bgWorker.DoWork += BgWorker_DoWork;
            bgWorker.RunWorkerAsync();
        }

        private void BgWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            while (true)
            {
                Dispatcher.BeginInvoke(new Action(() =>
                            {
                                lbx.Items.Add($"{++num},{Guid.NewGuid()}");
                            }));
                Thread.Sleep(100);
            }
        }
    }
}

 

标签:Task,Thread,thread,void,System,using,new,Guid,Parallel
From: https://www.cnblogs.com/Fred1987/p/18374742

相关文章

  • 多模态学习之论文阅读:《Pre-gating and Contextual Attention Gate — A new fusion m
    《Pre-gatingandContextualAttentionGate—Anewfusionmethodformulti-modaldatatasks》 -2024.11 影响因子7.9  (一)要点提出一种新的多模态数据融合方法,即PCAG(Pre-gatingandContextualAttentionGate),以解决现有跨模态交互学习中的噪声问题和不确定性问......
  • SAP Parallel Accounting(平行分类账业务)配置及操作手册【适用于多国家会计准则】
    1.配置准备1.1理解平行账概念平行账,也称为多分类账,是SAP系统中的一项功能,它允许企业按照不同的会计准则来维护各自的财务数据。这种设置特别适用于那些需要符合多种会计准则的跨国公司。通过平行账,企业可以在不同的分类账中记录相同的交易,但按照各自的会计政策进行处理。......
  • jmeter压测组件bzm-Arrivals Thread Group使用Jenkins运行配置
    jmeter脚本设置Jenkins设置运行代码设置cd/home/jmeterWorkplace/performceTps/script/home/app/apache-jmeter-5.4.3/bin/jmeter-n-tjenkins_test.jmx-Jtarget_rate=${target_rate}-Jramp_up_time=${ramp_up_time}-Jramp_up_step_count=${ramp_up_step_count}-Jh......
  • ThreadLocal ThreadLocalUtil
    ThreadLocalUtil.javapublicclassThreadLocalUtil{staticfinalThreadLocalTHREAD_LOCAL=newThreadLocal();publicstatic<T>Tget(){return(T)THREAD_LOCAL.get();}publicstaticvoidset(Objectvalue){TH......
  • 在.NET应用中,使用Parallel类可以显著提高多线程环境下的执行效率
    在.NET应用中,使用Parallel类可以显著提高多线程环境下的执行效率,特别是当你需要并行执行多个不依赖彼此的任务时。Parallel类位于System.Threading.Tasks命名空间中,它提供了一系列静态方法,如Parallel.For、Parallel.ForEach和Parallel.Invoke,以支持并行循环和并行执行任务。1.......
  • 线程(Thread)的使用方法和锁(同步代码块,lock锁)的问题
    多线程:    进程:      正在运行的程序,是系统进行资源分配和调用的独立单位。      每一个进程都有它自己的内存空间和系统资源。      理解:一个正在运行的软件    线程:      是进程中的单个顺序控制流,是......
  • vSphere5.11.3.管理特性.1.Scheduled Task
    vcenterserversupportsquitealistoftasksyoucanscheduletorunautomatically:1.changethepowerstateofavm.(修改虚拟机电源状态)2.cloneavm.(克隆虚拟机)3.deployavmfromatemplate.(从一个模板部署虚拟机)4.moveavmwithvmotion.(使用vmotion技......
  • C# Task与Action和Func
    在C#中,Task是用于表示异步操作的类型。Action和Func<>是用于定义无返回值的方法和有返回值的方法委托。1.使用Action委托Action委托是无返回值的,你可以使用它来异步执行一个方法。Actionaction=()=>MethodWithNoReturnValue();Task.Run(action);2.使用Func<>委托Func......
  • C# Task
    Task 是C#中用于异步编程的一个核心组件,它表示一个异步操作的最终完成。Task 可以返回一个结果或者不返回任何结果(Task 类型),并且可以与其他 Task 对象组合和等待它们的完成。创建Task:Task.Run(()=>{//异步执行的代码});等待Task完成:awaitTask.Run(()=>{//异步执行......
  • Paper Reading: SAFE: Scalable Automatic Feature Engineering Framework for Indust
    目录研究动机文章贡献本文方法整体框架特征生成特征组合关系排序特征组合生成特征特征选择去除无信息特征去除冗余特征复杂度分析实验结果数据集和实验设置对比实验特征重要性比较运行时间特征稳定性不同迭代次数的性能大规模数据集实验优点和创新点PaperReading是从个人角度进......