首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在c# .net中运行线程

在c# .net中运行线程
EN

Stack Overflow用户
提问于 2013-01-09 14:10:13
回答 5查看 1.7K关注 0票数 1

让我们考虑一个经常改变字符串包含值的方法。我需要创建线程,它运行每1分钟从一个字符串中获取一个值。

有可能吗?

我尝试了下面的代码,它会休眠除特定线程之外的整个进程:

代码语言:javascript
运行
复制
System.Threading.Thread.Sleep(10000);
EN

回答 5

Stack Overflow用户

发布于 2013-01-09 14:14:50

如果您希望在定义的时间段内运行线程化进程,那么System.Threading.Timer类将是完美的选择

代码语言:javascript
运行
复制
var timer = new System.Threading.Timer((o) =>
{
    // do stuff every minute(60000ms)

}, null, 0, 60000);

但是,如果要从该线程更新任何UI代码,请不要忘记在UI线程上回调

WPF:

代码语言:javascript
运行
复制
var timer = new System.Threading.Timer((o) =>
{
    Dispatcher.Invoke(DispatcherPriority.Normal, (Action)delegate
    {
        // do stuff WPF UI safe
    });

}, null, 0, 60000);

Winform

代码语言:javascript
运行
复制
var timer = new System.Threading.Timer((o) =>
{
    base.Invoke((Action)delegate
    {
        // do stuff Winforms UI safe
    });

}, null, 0, 60000);

示例:

代码语言:javascript
运行
复制
private void StartUpdateTimer()
{
    var timer = new System.Threading.Timer((o) => 
    { 
        string ss = "gowtham " + DateTime.Now.ToString(); 
        Response.Write(ss); 
    }, null, 0,1000);
}
票数 5
EN

Stack Overflow用户

发布于 2013-01-09 14:12:31

使用:

代码语言:javascript
运行
复制
new Thread(delegate()
    {
         while(true)
         {
             // Do stuff
             Thread.sleep(60000);
         }
    }).Start();

60000毫秒是一分钟

Thread.sleep使当前线程进入休眠状态

票数 1
EN

Stack Overflow用户

发布于 2013-01-09 14:19:58

Sleep不会启动新线程,它会在给定的毫秒数内阻塞当前线程(在本例中为UI线程)。

根据您的描述,您希望启动新的线程,并且可以在该线程中休眠。此外,使用计时器可能会更容易。关于MSDN Thread article中线程对象可用性的完整示例和信息

代码语言:javascript
运行
复制
new Thread(ThreadFunction).Start(); 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14229239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档