Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 如何在c#中运行特定时间的线程?类似于像脚本一样反复执行相同的代码5秒钟_Wpf_C# 4.0 - Fatal编程技术网

Wpf 如何在c#中运行特定时间的线程?类似于像脚本一样反复执行相同的代码5秒钟

Wpf 如何在c#中运行特定时间的线程?类似于像脚本一样反复执行相同的代码5秒钟,wpf,c#-4.0,Wpf,C# 4.0,我想运行一个线程,一小部分代码要执行5秒钟 执行应该只有一次,它应该在特定的时间内持续执行 注意:它不应该继续执行,比如计时器。只能执行一次 真正的问题: 有一个脚本叫做AHK。(自动热键)。 它执行一些任务,比如在特定时间隐藏任务栏。 我不允许修改脚本。 我必须在应用程序部分(C#)中修改相同的内容 试用代码示例: void StartConnection() { stopwatch.Start(); Thread threadObj = new Thread(ThreadFunc); thr

我想运行一个线程,一小部分代码要执行5秒钟

执行应该只有一次,它应该在特定的时间内持续执行

注意:它不应该继续执行,比如计时器。只能执行一次

真正的问题:

有一个脚本叫做AHK。(自动热键)。 它执行一些任务,比如在特定时间隐藏任务栏。 我不允许修改脚本。 我必须在应用程序部分(C#)中修改相同的内容

试用代码示例:

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
}

我希望这有帮助。

那么您想创建一个运行代码的线程吗?然后创建一个线程并编写它应该运行的代码。否则,问题是什么还不清楚。“运行特定时间”、“连续运行”和“仅运行一次”在没有适当解释的情况下有点矛盾。添加了真正的问题。因此,在线程上运行一个循环,检查自循环开始以来经过的时间。。。你们试过写这段代码吗?是的,我试过了,只是看看有并没有任何网络概念可以实现这一点。方法取决于实际情况。正在运行的方法是否从另一个方法得到停止的通知?因此您想创建一个运行代码的线程?然后创建一个线程并编写它应该运行的代码。否则,问题是什么还不清楚。“运行特定时间”、“连续运行”和“仅运行一次”在没有适当解释的情况下有点矛盾。添加了真正的问题。因此,在线程上运行一个循环,检查自循环开始以来经过的时间。。。你们试过写这段代码吗?是的,我试过了,只是看看有并没有任何网络概念可以实现这一点。方法取决于实际情况。正在运行的方法是否收到另一个方法的停止通知?