Wpf 如何在c#中运行特定时间的线程?类似于像脚本一样反复执行相同的代码5秒钟
我想运行一个线程,一小部分代码要执行5秒钟 执行应该只有一次,它应该在特定的时间内持续执行 注意:它不应该继续执行,比如计时器。只能执行一次 真正的问题: 有一个脚本叫做AHK。(自动热键)。 它执行一些任务,比如在特定时间隐藏任务栏。 我不允许修改脚本。 我必须在应用程序部分(C#)中修改相同的内容 试用代码示例:Wpf 如何在c#中运行特定时间的线程?类似于像脚本一样反复执行相同的代码5秒钟,wpf,c#-4.0,Wpf,C# 4.0,我想运行一个线程,一小部分代码要执行5秒钟 执行应该只有一次,它应该在特定的时间内持续执行 注意:它不应该继续执行,比如计时器。只能执行一次 真正的问题: 有一个脚本叫做AHK。(自动热键)。 它执行一些任务,比如在特定时间隐藏任务栏。 我不允许修改脚本。 我必须在应用程序部分(C#)中修改相同的内容 试用代码示例: void StartConnection() { stopwatch.Start(); Thread threadObj = new Thread(ThreadFunc); thr
void StartConnection()
{
stopwatch.Start();
Thread threadObj = new Thread(ThreadFunc);
threadObj.Start();
}
void ThreadFunc()
{
for (; stopwatch.Elapsed.TotalSeconds < 6; )
{
WindowsNativeCalls.HideTaskbar();
}
}
void StartConnection()
{
秒表。开始();
Thread threadObj=新螺纹(ThreadFunc);
threadObj.Start();
}
void ThreadFunc()
{
对于(;秒表。已用时间。总秒数<6;)
{
WindowsNativeCalls.HideTaskbar();
}
}
有没有其他的点网概念可以实现这一点?看看这是否符合您的要求:
private void Button_Click(object sender, RoutedEventArgs e)
{
System.Threading.Tasks.Task.Factory.StartNew(() => { mycallBack(); });
}
private void mycallBack()
{
System.Diagnostics.Stopwatch stopWatch = new System.Diagnostics.Stopwatch();
stopWatch.Start();
while (true)
{
System.Diagnostics.Debug.WriteLine("Running !");
if (stopWatch.Elapsed.Seconds >= 5)
break;
}
System.Diagnostics.Debug.WriteLine("Done !");
}
看看这是否符合你的要求:
private void Button_Click(object sender, RoutedEventArgs e)
{
System.Threading.Tasks.Task.Factory.StartNew(() => { mycallBack(); });
}
private void mycallBack()
{
System.Diagnostics.Stopwatch stopWatch = new System.Diagnostics.Stopwatch();
stopWatch.Start();
while (true)
{
System.Diagnostics.Debug.WriteLine("Running !");
if (stopWatch.Elapsed.Seconds >= 5)
break;
}
System.Diagnostics.Debug.WriteLine("Done !");
}
您可以使用
dispatchermer
private DispatcherTimer myTimer;
private void StartMyTimer()
{
if (myTimer != null)
myTimer.Stop();
myTimer = new DispatcherTimer();
myTimer.Interval = TimeSpan.FromSeconds(5);// You can change this for minutes, hours and etc
myTimer.Tick += myTimer_Tick;
myTimer.Start();
}
void myTimer_Tick(object sender, EventArgs e)
{
//Do something here every 5 seconds
}
我希望这有帮助。您可以使用
Dispatchermer
private DispatcherTimer myTimer;
private void StartMyTimer()
{
if (myTimer != null)
myTimer.Stop();
myTimer = new DispatcherTimer();
myTimer.Interval = TimeSpan.FromSeconds(5);// You can change this for minutes, hours and etc
myTimer.Tick += myTimer_Tick;
myTimer.Start();
}
void myTimer_Tick(object sender, EventArgs e)
{
//Do something here every 5 seconds
}
我希望这有帮助。那么您想创建一个运行代码的线程吗?然后创建一个线程并编写它应该运行的代码。否则,问题是什么还不清楚。“运行特定时间”、“连续运行”和“仅运行一次”在没有适当解释的情况下有点矛盾。添加了真正的问题。因此,在线程上运行一个循环,检查自循环开始以来经过的时间。。。你们试过写这段代码吗?是的,我试过了,只是看看有并没有任何网络概念可以实现这一点。方法取决于实际情况。正在运行的方法是否从另一个方法得到停止的通知?因此您想创建一个运行代码的线程?然后创建一个线程并编写它应该运行的代码。否则,问题是什么还不清楚。“运行特定时间”、“连续运行”和“仅运行一次”在没有适当解释的情况下有点矛盾。添加了真正的问题。因此,在线程上运行一个循环,检查自循环开始以来经过的时间。。。你们试过写这段代码吗?是的,我试过了,只是看看有并没有任何网络概念可以实现这一点。方法取决于实际情况。正在运行的方法是否收到另一个方法的停止通知?