C#使用Sleep(Int32)方法實(shí)現(xiàn)動(dòng)態(tài)顯示時(shí)間
一、涉及到的知識(shí)點(diǎn)
在使用線程時(shí),經(jīng)常會(huì)用到Sleep方法,Sleep方法用于將線程掛起指定的時(shí)間,時(shí)間的單位為毫秒。本實(shí)例中將會(huì)創(chuàng)建一條線程,并在線程的While循環(huán)中使用Sleep方法將線程掛起一秒鐘,使線程每隔一秒鐘獲取一次系統(tǒng)時(shí)間,并將系統(tǒng)時(shí)間顯示到TextBox控件中。
本實(shí)例實(shí)現(xiàn)時(shí)主要用到了多線程技術(shù)和線程的Sleep方法。
實(shí)例中使用了Lambda表達(dá)式,實(shí)現(xiàn)了Thread類(lèi)的構(gòu)造方法中的ThreadStart委托所約定的方法。
1.Sleep(Int32)方法
將當(dāng)前線程掛起指定的毫秒數(shù)。
public static void Sleep (int millisecondsTimeout);
參數(shù)
millisecondsTimeout Int32
掛起線程的毫秒數(shù)。 如果 millisecondsTimeout 參數(shù)的值為零,則該線程會(huì)將其時(shí)間片的剩余部分讓給任何已經(jīng)準(zhǔn)備好運(yùn)行的、具有同等優(yōu)先級(jí)的線程。 如果沒(méi)有其他已經(jīng)準(zhǔn)備好運(yùn)行的、具有同等優(yōu)先級(jí)的線程,則不會(huì)掛起當(dāng)前線程的執(zhí)行。
例外
ArgumentOutOfRangeException
超時(shí)值為負(fù)且不等于 Infinite。
2.Parallel.Invoke方法
詳見(jiàn)本作者的其他文章,C#用Parallel.Invoke 方法盡可能并行執(zhí)行提供的每個(gè)線程
二、 實(shí)例:用Sleep方法動(dòng)態(tài)時(shí)間
// 使用Sleep方法動(dòng)態(tài)時(shí)間
namespace _065
{
public partial class Form1 : Form
{
private Label? label1;
private static TextBox? textBox1;
public Form1()
{
InitializeComponent();
Load += Form1_Load;
}
private void Form1_Load(object? sender, EventArgs e)
{
//
// label1
//
label1 = new Label
{
AutoSize = true,
Location = new Point(12, 8),
Name = "label1",
Size = new Size(188, 17),
TabIndex = 0,
Text = "每秒種獲取一次系統(tǒng)時(shí)間并顯示:"
};
//
// textBox1
//
textBox1 = new TextBox
{
ForeColor = Color.Red,
Location = new Point(12, 29),
Multiline = true,
Name = "textBox1",
Size = new Size(360, 45),
TabIndex = 1
};
//
// Form1
//
AutoScaleDimensions = new SizeF(7F, 17F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(384, 86);
Controls.Add(textBox1);
Controls.Add(label1);
Name = "Form1";
StartPosition = FormStartPosition.CenterScreen;
Text = "用Sleep方法動(dòng)態(tài)顯示時(shí)間";
Sleep_Func();
}
private static void Sleep_Func()
{
Thread th = new( //創(chuàng)建線程對(duì)象
() => //使用Lambda表達(dá)式
{
while (true) //無(wú)限循環(huán)
{
Parallel.Invoke(//在窗體線程中執(zhí)行
() => //使用Lambda表達(dá)式
{
textBox1!.Text = //顯示系統(tǒng)時(shí)間
DateTime.Now.ToString("F");
});
Thread.Sleep(1000); //線程掛起1000毫秒
}
})
{
IsBackground = true //設(shè)置線程為后臺(tái)線程
};
th.Start(); //開(kāi)始執(zhí)行線程
}
}
}
到此這篇關(guān)于C#使用Sleep(Int32)方法實(shí)現(xiàn)動(dòng)態(tài)顯示時(shí)間的文章就介紹到這了,更多相關(guān)C#動(dòng)態(tài)顯示時(shí)間內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#?使用原生?System.IO.Compression?實(shí)現(xiàn)?zip?的壓縮與解壓
這篇文章主要介紹了C#?使用原生?System.IO.Compression?實(shí)現(xiàn)?zip?的壓縮與解壓,zip?是一個(gè)非常常見(jiàn)的壓縮包格式,本文主要用于說(shuō)明如何使用代碼?文件或文件夾壓縮為?zip壓縮包及其解壓操作,需要的朋友可以參考下2022-09-09
C#實(shí)現(xiàn)獲取磁盤(pán)空間大小的方法
這篇文章主要介紹了C#實(shí)現(xiàn)獲取磁盤(pán)空間大小的方法,分別基于System.IO.DriveInfo.GetDrives方法與ManagementClass("Win32_LogicalDisk")來(lái)實(shí)現(xiàn)這一功能,是非常實(shí)用的技巧,需要的朋友可以參考下2014-12-12
一文詳解C#中重寫(xiě)(override)及覆蓋(new)的區(qū)別
這篇文章主要為大家詳細(xì)介紹了C#中重寫(xiě)(override)及覆蓋(new)這兩個(gè)關(guān)鍵詞的區(qū)別,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-03-03
C#實(shí)現(xiàn)遞歸算法經(jīng)典實(shí)例
這篇文章主要為大家介紹了C#實(shí)現(xiàn)遞歸算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-01-01
C# 開(kāi)發(fā)(創(chuàng)藍(lán)253)手機(jī)短信驗(yàn)證碼接口的實(shí)例
下面小編就為大家分享一篇C# 開(kāi)發(fā)(創(chuàng)藍(lán)253)手機(jī)短信驗(yàn)證碼接口的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01

