在C#中如何使用多线程,每隔几秒去执行一个方法?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C#中如何使用多线程,每隔几秒去执行一个方法?相关的知识,希望对你有一定的参考价值。

/// <summary>
/// 简单的 线程执行的 方法.
///
/// 这个方法是 静态的
/// </summary>
public static void ThreadFunc()

// 线程停止运行的标志位.
Boolean done = false;

// 计数器
int count = 0;

while (!done)

// 休眠1秒.
Thread.Sleep(1000);

// 计数器递增
count++;

// 输出.
Console.WriteLine("[静态]执行次数:0", count);



/// <summary>
/// 启动线程的代码.
/// </summary>
public static void StartThread()

ThreadStart ts = new ThreadStart(ThreadFunc);
Thread t = new Thread(ts);

// 启动.
t.Start();


全部的例子代码看下面的帖子
http://hi.baidu.com/wangzhiqing999/blog/item/0d97c262b0133534ab184ce0.html
参考技术A 现在vs2008一般不用线程,大家都使用委托
1、委托程序
private void WriteLog(string content)

//内容自己写


2、委托手柄

delegate void WriteLogHandle(string content);

3、委托使用方法

this.Invoke(new WriteLogHandle(WriteLog),new object[]"参数");

然后放一个时钟控件,循环去执行方法(3)就行了
参考技术B 引入名称空间
using System.Threading;

然后使用Thread对象调用方法
例如
do
方法
Thread.Sleep(2000);

while(条件)
参考技术C 窗体有Timer,线程也有自己Timer类。
你使用线程的Timer类就可以实现了。

在 jupyter 中 [每隔几秒] 更新 plotly 图形

【中文标题】在 jupyter 中 [每隔几秒] 更新 plotly 图形【英文标题】:updating plotly figure [every several seconds] in jupyter 【发布时间】:2021-10-14 06:29:06 【问题描述】:

我是 plotly python 包的新手,遇到过这样的问题: 有一个 pandas 数据框正在循环更新,我必须使用 plotly 从中绘制数据。 一开始所有df.response 值都是None,然后它开始填充它。这是一个例子:at the beginningafter it starts to fill 我想巧妙地对这些变化做出反应,但我不知道如何以最“规范”和简单的方式来做到这一点。 (如果数据更新循环和情节更新能够同时工作,那就太好了,但如果情节每隔几秒钟就会做出反应,那也很好)。我发现了一些功能,但并不完全了解它们的工作原理:

import plotly.graph_objects as go
import cufflinks as cf
from plotly.offline import init_notebook_mode

init_notebook_mode(connected=True)
cf.go_offline()

fig = go.Figure(data=go.Heatmap(z=df.response,
                                x=df.currents,
                                y=df.frequencies))

fig.update_layout(datarevision=???) # This one

...

【问题讨论】:

【参考方案1】: 如果您想在数据到达时进行更新,您需要一种事件/中断处理方法 此示例使用时间作为事件/中断,dash Interval 通过将其他数据连接到数据帧来模拟更多数据,然后更新 回调 中的 figure
import plotly.graph_objects as go
import numpy as np
import pandas as pd
from jupyter_dash import JupyterDash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output, State

# initialise dataframe and figure
df = pd.DataFrame("response":[], "currents":[], "frequencies":[])
fig = go.Figure(data=go.Heatmap(z=df.response,
                                x=df.currents,
                                y=df.frequencies))



# Build App
app = JupyterDash(__name__)
app.layout = html.Div(
    [
        dcc.Graph(id="heatmap", figure=fig),
        dcc.Interval(id="animateInterval", interval=400, n_intervals=0),
    ],
)

@app.callback(
    Output("heatmap", "figure"),
    Input("animateInterval", "n_intervals"),
    State("heatmap", "figure")
)
def doUpdate(i, fig):
    global df
    df = pd.concat([df, pd.DataFrame("response":np.random.uniform(1,5,100), "currents":np.random.randint(1,20,100), "frequencies":np.random.randint(1,50,100))])

    return go.Figure(fig).update_traces(go.Heatmap(z=df.response,
                                x=df.currents,
                                y=df.frequencies))


# Run app and display result inline in the notebook
app.run_server(mode="inline")

【讨论】:

谢谢!这对我帮助很大!

以上是关于在C#中如何使用多线程,每隔几秒去执行一个方法?的主要内容,如果未能解决你的问题,请参考以下文章

让PHP文件每隔几秒执行一次

如何在python中每隔几秒在tkinter窗口中更改一行文本[重复]

在 Pygame 中每隔几秒移动一个对象

如何使用twisted每隔几秒发送一次IRC消息?

python定时器每隔几秒执行一次

在 jupyter 中 [每隔几秒] 更新 plotly 图形