C# 我们可以在后台工作人员中使用Dispatchermer吗?

C# 我们可以在后台工作人员中使用Dispatchermer吗?,c#,.net,wpf,C#,.net,Wpf,我有一些WPF应用程序。我需要在BackgroundWorker中执行一些代码,为此我使用dispatchermer。另外,该代码不使用UI 我的问题是这样可以吗?或者最好使用定时器或同时和线程。睡眠 使用任务和计时器或调度程序而不是后台工作人员是否更好 因此,我们有两种方法可供选择。(还是更多?) BackgroundWorker调用dispatchermer | | Timer | | | |(While&Thread.Sleep) Task调用dispatchermer | | | Tim

我有一些WPF应用程序。我需要在
BackgroundWorker
中执行一些代码,为此我使用
dispatchermer
。另外,该代码不使用UI

我的问题是这样可以吗?或者最好使用
定时器
同时
线程。睡眠

使用
任务
计时器
调度程序
而不是
后台工作人员
是否更好

因此,我们有两种方法可供选择。(还是更多?)

  • BackgroundWorker
    调用
    dispatchermer | | Timer | | | |(While&Thread.Sleep)

  • Task
    调用
    dispatchermer | | | Timer | | | | | | | | | | | | | | |

  • 我只需要知道最佳性能解决方案。

    这里有一些代码

    DispatcherTimer logManagerUpdater = new DispatcherTimer(DispatcherPriority.Background);
    BackgroundWorker logManagerWorker = new BackgroundWorker();
    
    private void StartLogManager()
    {
        logManagerWorker.DoWork += new DoWorkEventHandler(logManagerWorker_DoWork);
        logManagerWorker.RunWorkerAsync();
    }
    
    void logManagerWorker_DoWork(object sender, DoWorkEventArgs e)
    {
        if (this.logManagerWorker.CancellationPending)
        {
           e.Cancel = true;
           return;
        }
    
        logManagerUpdater.Interval = new TimeSpan(0, 0, 10);
        logManagerUpdater.Tick += new EventHandler(logManagerUpdater_Tick);  
        logManagerUpdater.Start();
    }
    
    void logManagerUpdater_Tick(object sender, EventArgs e)
    {
       LogManagerJob();   
       LogDBManagerJob();  
    }
    

    如果您的代码不使用UI,那么就不需要
    Dispatchermer
    ——它专门用于在Dispatcher线程(通常是UI线程)上触发代码。一个固定的计时器就足够了


    此外,在您发布的代码中,您实际上是“创建后台线程来创建后台线程”。我建议您完全删除后台工作程序,只需在
    StartLogManager
    方法中创建计时器。

    如果您的代码不使用UI,则不需要
    Dispatchermer
    ——它专门用于在Dispatcher线程(通常是UI线程)上触发代码。一个固定的计时器就足够了


    此外,在你发布的代码中,你本质上是在“创建一个后台线程来创建一个后台线程”。我建议你完全删除后台工作程序,只需在
    startogmanager
    方法中创建计时器。

    你说你在
    后台工作程序中使用
    dispatchermer
    ?你最好发布一些代码…@DanPuzey抱歉代码太大了。我只需要知道最好的性能解决方案。@DanPuzey我只是放了一些代码。你说你在
    后台工作人员中使用
    Dispatchermer
    ?你最好发布一些代码…@DanPuzey抱歉代码太大了。我只需要知道最好的性能解决方案。@DanPuzey我只是放了一些代码。