⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 threader.cs.svn-base

📁 这是一个windows mobile程序能够实现窗体运货效果非常不错
💻 SVN-BASE
字号:
using System;
using System.Drawing;
using System.Collections;
using System.Windows.Forms;
using System.Data;
using System.Threading;


namespace Glasgow.Threading
{

    public delegate void ThreaderTickHandler(object sender);

    public class Threader
    {
        private bool workerThreadDone = true;
        private AutoResetEvent workerThreadTerminated;
        private int interval;
        public event ThreaderTickHandler ThreaderTick;

        /// <summary>
        /// The perfect thread
        /// </summary>
        public Threader(){
            workerThreadTerminated = new AutoResetEvent(false);
        }

        /// <summary>
        /// If the interval is more than 1000 millis the event will fire on the nearest second
        /// </summary>
        public int Interval
        {
            get
            {
                return interval;
            }
            set
            {
                interval = value;
            }
        }

        public bool Enabled
        {
            get
            {
                return !workerThreadDone;
            }
            set
            {
                if (value)
                {
                    if (workerThreadDone)
                    {
                        workerThreadDone = false;
                        Thread myThread = new Thread(new ThreadStart(MyWorkerThread));
                        myThread.Start();
                    }
                }
                else
                {
                    if (workerThreadDone)
                        return;
                    workerThreadDone = true;
                    workerThreadTerminated.WaitOne();
                }
            }
        }


        private void MyWorkerThread()
        {
            while (!workerThreadDone)
            {
                if (interval > 1000)
                {
                    for (int i = 0; i < interval; i += 1000)
                    {
                        Thread.Sleep(1000);
                        if (workerThreadDone)
                            break;
                    }
                }
                else
                {
                    Thread.Sleep(interval);
                }
                if (workerThreadDone)
                    break;
                if (ThreaderTick != null)
                    ThreaderTick(this);
            }
            workerThreadTerminated.Set();
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -