wpf 多线程操作例(1)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;  //线程操作引用的命名空间

namespace windowform线程操作
{

//定义一个委托,没有参数
       public delegate void RunDele();

    public partial class Form1 : Form
    {

        Thread thread;     //造一个线程对象
        public Form1()
        {
            InitializeComponent();

            Control.CheckForIllegalCrossThreadCalls = false;  //告诉程序不要检查线程的安全性,比较省力,但会对程序造成不好影响
        }

        bool isRun = true;
        //点击启动
        private void button1_Click(object sender, EventArgs e)
        {
            thread = new Thread(new ThreadStart(Run));  

            thread.IsBackground = true;

            thread.Start();   //委托开始执行

           /*& button1.Enabled = false;
            long i = 0;
            while (isRun)
            {
                listView1.Items.Insert(0,i.ToString());

                i++;
            }

            isRun = true;*/
        }

        private void button2_Click(object sender, EventArgs e)
        {
            isRun = false;
            button1.Enabled = true ;
        }
        long i = 0;
        void Run()
        {
           // button1.Enabled = false;

            while (isRun)
            {

               RunDele();
           }

            isRun = true;
        }

        void RunDele()
        {
            if (listView1.InvokeRequired)//子线程返回的是true
            {
                RunDele dr = new RunDele(RunDele);
                this.Invoke(dr);//转换成父线程
            }
            else
            {
                listView1.Items.Add(i.ToString());

                i++;
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
    }
}
时间: 2024-07-28 16:04:13

wpf 多线程操作例(1)的相关文章

wpf 多线程操作(2)

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Threading; namespace WindowsFormsApplication1 { public delegate void Run

C#中级-常用多线程操作(持续更新)

一.前言       多线程操作一直是编程的常用操作,掌握好基本的操作可以让程序运行的更加有效.本文不求大而全,只是将我自己工作中常常用到的多线程操作做个分类和总结.平时记性不好的时候还能看看.本文参考了多篇园子里的精彩博文,在文章最后会贴出具体来源,感谢他们的无私奉献. 二.关于线程 (1) 为何使用线程: 可以使用线程将代码同其他代码隔离,提高应用程序的可靠性: 可以使用线程来简化编码: 可以使用线程来实现并发执行. (2) 进程.应用程序域以及线程的关系: 进程(Process)是Wind

MFC的多线程操作

记得用MFC做了一个图像自动修复软件,当时没有多线程操作这一概念,由于图像修复算法比较复杂,因此,当执行图像修复时,程序就像卡死了似得而不能做其他操作.其实MFC对这种情况有一种很好地解决方案,那就是采用多线程编程技术.以图像修复算法为例,由于其本身需要耗费大量时间,因此我们可以单独开一个线程让他执行修复而不影响主程序的操作. 关于线程的一些概念,以及在VS2013下的实例: MFC中有两类线程,分别称之为工作者线程和用户界面线程.二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的

Java多线程操作

Java中的线程 一个程序的运行须要启动一个应用进程,一个进程能够创建多个线程.帮助应用完毕多任务操作.实现并发运行.在Java中线程是被封装成Thread类.进行多线程操作时仅仅须要继承一个Thread类,实现自己的功能就可以.然后开启此线程,或者你也能够实现一个Runnable接口.然后将其传递给Thread对象.然后再启动它. 线程的创建于启动 继承Thread 创建一个类并继承Thread类,然后实现Thread类的run方法,在run方法内填上自己的代码.然后创建这个自己定义类,并调用

多线程操作C++ STL vector出现概率coredump问题及尽量避免锁的双缓冲队列

多线程操作全局变量,必须考虑同步问题,否则可能出现数据不一致, 甚至触发coredump. 前段时间, 遇到一个多线程操作了全局的vector的问题,  程序崩了.场景是这样的:某全局配置参数保存在一个vector中,需要定时更新(更新线程), 另外的工作线程去读取配置. 这种场景是非常普遍的. 在该场景中,程序没有枷锁,概率coredump, 实际情况是,服务跑了一段时间后,必然coredump.   很显然, 更新线程执行clear,然后在push_back操作时, 会导致工作线程的vect

iOS 数据库多线程操作

SQLite是支持多线程操作的, 需要在初始化database是做一个线程安全的config,参考下面链接,看起来比较复杂. http://www.cnblogs.com/wfwenchao/p/3964213.html 很多iOS项目中都使用FMDB这个第三方开源库,但FMDB不能在多个线程中共同一个FMDatabase对象,因为这个类本身不是线程安全的,如果这样使用会造成数据混乱等问题. 如要需要多线程操作数据库,那么就需要使用FMDatabaseQueue来保证线程安全了. 首先用一个数据

黑马程序员-Java多线程操作

--Java培训.Android培训.iOS培训..Net培训.期待与您交流!--- Java中的线程 一个程序的运行需要启动一个应用进程,一个进程可以创建多个线程,帮助应用完成多任务操作,实现并发运行.在Java中线程是被封装成Thread类,进行多线程操作时只需要继承一个Thread类,实现自己的功能即可,然后开启此线程,或者你也可以实现一个Runnable接口,然后将其传递给Thread对象,然后再启动它. 线程的创建于启动 继承Thread 创建一个类并继承Thread类,然后实现Thr

IE exp中的多线程操作

最近在写cve-2014-0321这个漏洞的poc,分析的时候发现这流程简直就是个坑(越写越坑!!),没办法只能照着古河的思路,利用多线程进行操作.虽然知道多线程操作用window.open去创建,但调用了之后发现一直创建的都是个进程,根本就没有线程啊,简直就是个坑啊.后来无数次的尝试之后才发现,之前一直本地进行IE漏洞的调试,这样子使用window.open打开的总是一个进程,这样子也就没办法实现利用或者是占位.之后,用python架了简易的web服务,web的方式来访问,才发现window.

python threading模块使用 以及python多线程操作的实践(使用Queue队列模块)

今天花了近乎一天的时间研究python关于多线程的问题,查看了大量源码 自己也实践了一个生产消费者模型,所以把一天的收获总结一下. 由于GIL(Global Interpreter Lock)锁的关系,纯的python代码处理一般逻辑的确无法活动性能上的极大提升,但是在处理需要等待外部资源返回或多用户的应用程序中,多线程仍然可以作为一个比较好的工具来进行使用. python提供了两个模块thread和threading 来支持python的多线程操作.通俗的讲一般现在我们只使用threading