C#多執行緒實現定時器
我們在寫winfrom時經常會用到定時器,比如客戶端通過socket定時向伺服器傳送檢測包等。.netframework提供了一個定時器控制元件System.Windows.Forms.Timer,使用很方便。
其實通過C#多執行緒也可以實現定時器功能。我的做法大致為:新開一個執行緒用於計時,當時間間隔過後用事件timerover實現主窗體中的定時函式,再通過呼叫contro.invoke方法返回主窗體執行緒執行定時後的操作。
先定義兩個類,timer類用於管理和配置定時器,interval_date用於計算兩個時刻的間隔(例如2010年1月1日和2012年12月26日之間的毫秒),單位是毫秒,因此定時器的設定範圍理論上可以無限大。原理不多說,下面放程式碼:
timer類程式碼:
interval_date類程式碼:
最後是主窗體程式碼:
一個文字框兩個按鈕,按鈕一用來開啟定時器,按鈕二用來複位。
通過簡單的驗證,這種方法和.netframework提供的timer控制元件實現的定時誤差在個位數(毫秒),也可以嘗試用更精確的方法來測試一下。
相關推薦
C#多執行緒實現定時器
我們在寫winfrom時經常會用到定時器,比如客戶端通過socket定時向伺服器傳送檢測包等。.netframework提供了一個定時器控制元件System.Windows.Forms.Timer,使用很方便。 其實通過C#多執行緒也可以實現定時器功能。
多執行緒學習----定時器(二)
1.建立一個定時器,執行某個任務,第一次執行在10s鍾以後,之後每隔1s鍾執行一次。 new Timer().schedule(new TimerTask() { @Override public void run() { System.out.println("bom
多執行緒&定時器Timer&同步&執行緒通訊&ThreadLocal
1.多執行緒 執行緒狀態分為:新建狀態、就緒狀態、執行狀態、阻塞狀態、死亡狀態 物件等待池的阻塞狀態:執行狀態執行了wait方法 對向鎖池的阻塞狀態:試圖獲得某個同步鎖,已經被其他執行緒佔用,就會放到物件的鎖池中 其他阻塞狀態:執行了s
C++多執行緒實現電子詞典
// Dictionary.cpp : 定義控制檯應用程式的入口點。 //vs2013編譯 //字典檔案:https://pan.baidu.com/s/1YHtwptaq_V8j034U9_J96A #include "stdafx.h" #include &
C#多執行緒學習(五) 多執行緒的自動管理(定時器)
Timer類:設定一個定時器,定時執行使用者指定的函式。 定時器啟動後,系統將自動建立一個新的執行緒,執行使用者指定的函式。 初始化一個Timer物件: Timer timer = new Timer(timerDelegate, s,1000, 1000); /
c/c++ 多執行緒 利用條件變數實現執行緒安全的佇列
多執行緒 利用條件變數實現執行緒安全的佇列 背景:標準STL庫的佇列queue是執行緒不安全的。 利用條件變數(Condition variable)簡單實現一個執行緒安全的佇列。 程式碼: #include <queue> #include <memory> #include
Java架構-Spring4+Springmvc+quartz實現多執行緒動態定時排程
scheduler定時排程系統是大多行業專案都需要的,傳統的spring-job模式,個人感覺已經out了,因為存在很多的問題,特別是定時排程的追加、修改、刪除等,需要修改xml,xml的配置生效無非是熱部署灰度釋出方案或者直接停止、重啟伺服器,完全不能做到自動啟動、修復方式。 提醒
C#多執行緒基礎,實現主子執行緒有序輸出
建立控制檯程式 using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; namespace AsyncThread { publi
c++ 網路程式設計(九)TCP/IP LINUX/windows下 多執行緒超詳細教程 以及 多執行緒實現服務端
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <process.h> #include <winsock2.h> #include <win
c++ 網路程式設計(九)TCP/IP LINUX/windows下 多執行緒超詳細教程 以及 多執行緒實現服務端
原文作者:aircraft 原文連結:https://www.cnblogs.com/DOMLX/p/9661012.html 先講Linux下(windows下在後面可以直接跳到後面看): 一.執行緒基本概念 前面我們講過多程序伺服器,但我們知道它開銷很大
最簡單的實現Linux C++多執行緒的互斥訪問
#include <stdlib.h> #include <string.h> #include <iostream> #include <unistd.h> #include <errno.h> #include <pthrea
Java多執行緒--三個執行緒分別列印a,b,c.請用多執行緒實現迴圈列印15次abc
掃盲: 想想自己多執行緒解決生產消費者問題就知道個synchronized,真是慚愧 為做此題目特意學習新的多執行緒知識–ReentrantLock跟synchronized一樣都是Java中的可重入鎖(可以在內部鎖中拿到外部鎖) Con
Win32下兩種用於C++的執行緒同步類(多執行緒實現加鎖解鎖)
使用Win32提供的臨界區可以方便的實現執行緒鎖: // 全域性: CRITICAL_SECTION cs; InitializeCriticalSection( & cs); // 執行緒1: EnterCriticalSection(
C# 執行緒:定時器的使用
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace ConsoleApplication1 { class
windows C++多執行緒程式設計高階篇 實現執行緒同步
上一篇文章windows程式設計 使用C++實現多執行緒類僅僅是介紹了怎樣用類來實現多執行緒,這篇文章則重點介紹多執行緒中資料同步的問題。好了,廢話不多說,進入主題。 問題場景:這裡我們假設有這樣一個工作流水線(CWorkPipeline),它不斷的生成一
生產者消費者問題 虛擬碼和C語言多執行緒實現
生產者消費者問題是作業系統中的一個經典的問題。 他描述的是一個,多個生產者與多個消費者共享多個緩衝區的事情,具體的定義百度。 然後看了作業系統的書籍如何解決書上給的虛擬碼是這樣的 item B[k]; semaphore empty; empty
c++多執行緒模式下的socket程式設計(執行緒池實現)
socket 程式設計可以說是一個基本的技術掌握,而多個客戶端向服務端傳送請求又是一個非常常見的場景,因此多執行緒模式下的socket程式設計則顯得尤為常見與重要。 本文主要利用執行緒池的技術,來實現多執行緒的模式,執行緒池的優點就不多述了,相信大家都能理
multi-reactor伺服器模型的C++封裝類(libevent+多執行緒實現)
最近在看memcached的原始碼,覺得它那種libevent+多執行緒的伺服器模型(multi-reactor)真的很不錯,我將這個模型封裝成一個C++類,根據我的簡單測試,這個模型的效率真的很不錯,歡迎大家試用。 這個類的使用方法很簡單(缺點是不太靈活),只
網路採集器Demo:Jsoup+Java多執行緒實現[爬蟲](上)
裡面最簡單,但是很常用的一個部分,就是網路爬蟲,從網頁上獲取文字資訊 這裡用到兩個工具,一個就是Java多執行緒(基於Java5 以上的執行緒池模式,區別於過時的Runable),另外一個是一個小工具:Jsoup,用於解析html網頁,獲取其中的內容,關於Jsoup的使用
C#多執行緒中通過lock實現執行緒同步
Lock定義 lock關鍵字用來確保程式碼塊執行完成,而不會被其他執行緒中斷。它可以把一段程式碼定義為互斥段(critical section),互斥段在一個時刻只允許一個執行緒進入執行,而其他執行緒必須等待。這是通過在程式碼執行期間為給定物件獲取互斥鎖來實