冷风.NET

    ---默默無聞
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

利用線程實現錠時執行的運行模型

Posted on 2005-01-07 10:33  冷风.net  阅读(819)  评论(1编辑  收藏  举报
以下是關於利用線程來定時執行的初步模型

using System;
using System.Data;
using System.Threading;
using System.Windows.Forms;

namespace Win
{
    
/// <summary>
    
///每隔30分鐘運行一次
    
/// </summary>

    public class Timer
    
{
        
/// <summary>是否正在運行</summary>
        public bool bRun;
        
/// <summary>出錯的最多次數</summary>
        public int iCount=10;    

        
public Timer()
        
{
            bRun 
= false;
            
//只用於拋出線程
            Thread myThread = new Thread(new ThreadStart(RunTimer));
            myThread.Start();
        }


        
/// <summary>
        
///  檢測時間與等待時間
        
/// </summary>

        private void RunTimer()
        
{
            
int curM = Int32.Parse(DateTime.Now.Minute.ToString());
            
if((curM==0 || curM==30&& !bRun)
            
{
                bRun 
= true;
                Thread thread 
= new Thread(new ThreadStart(RunMethod));
                thread.Start();
            }

            
else
            
{
                
                
if(curM>30)
                    curM 
= 60-curM;
                
else
                    curM 
= 30-curM;
                MessageBox.Show(curM.ToString());
                Thread.Sleep(curM
*60*1000);
                RunTimer();
            }

        }


        
/// <summary>
        
/// 定時執行的方法
        
/// </summary>

        private void RunMethod()
        
{
            
int iRun = 0;
            
try
            
{
                MessageBox.Show(DateTime.Now.ToString());
                bRun 
= false;
                RunTimer();
            }

            
catch
            
{
                
if(iRun<iCount)    RunMethod();
                
else MessageBox.Show("系統執行問題");
            }

            
finally
            
{
                iRun
++;
            }

        }

        

    }

}