标签: backgroundworker

如何避免在.NET Core中的异步调用中释放上下文

我的 api 中有一些缓慢的调用,因此为了不阻塞我的 UI,我按照本教程实现了一个后台工作服务。在我里面_backgroundWorkerQueue我有

_backgroundWorkerQueue.QueueBackgroundWorkItem(async token =>
{
    await client.ExecuteAsync(request, CancellationToken.None);
    await _projectRepository.Update(id, "Update", "unlock");
});
Run Code Online (Sandbox Code Playgroud)

第二行,await _projectRepository.Update向我抛出一个错误,表明上下文已被处理并且更新失败。我将服务设置为瞬态,并将上下文设置为瞬态,以便以这种方式进行测试,但我仍然遇到相同的错误。如果可能的话,在不使用 Hangfire 等其他库的情况下,如何避免和解决这个问题的任何想法和想法。

c# backgroundworker async-await .net-core

0
推荐指数
1
解决办法
1157
查看次数

wpf线程,后台工作者,调度员

我是wpf线程的新手,现在我们有背景工作和调度程序类,经典的winforms线程问题不再是问题吗?

wpf multithreading backgroundworker

-1
推荐指数
1
解决办法
1216
查看次数

的BackgroundWorker

如何与后台线程一起维护前台线程.如果我尝试在工作中将项添加到列表中,它会给我一个跨线程异常.

c# backgroundworker

-1
推荐指数
1
解决办法
712
查看次数

是否可以以编程方式创建BackgroundWorkers?

我试图让用户通过使用后台工作者来选择可用于执行任务的线程数量.

有没有办法自动创建多达250名后台工作人员?

c# backgroundworker winforms

-1
推荐指数
1
解决办法
1267
查看次数

在Windows窗体应用程序后台工作

我有以下星座:

MainForm.cs->包括我所有的表单元素

Program.cs->包括主体部分,它是一个xmlreader / writer,用于更改xml文件中的xml属性,该文件的大小可以达到4gb

所以这个小应用程序工作,但当然UI变得反应迟钝和冻结,我想避免的,我也希望能减少对道路这一过程的持续时间

我从BtnClick事件开始调用xmlread / write方法:

    void BtnApplyChangesClick(object sender, EventArgs e)
    {
        Program p = Program.Instance;
        pbApplyChanges.Minimum = 0;
        pbApplyChanges.Step = 1;

        Cursor.Current = Cursors.WaitCursor;
        foreach(DataGridViewRow cr in dataGridView2.Rows)
        {
            pbApplyChanges.Maximum = dataGridView2.Rows.Count;
            p.changeElements(cr.Cells["Filename"].Value.ToString(), txtTenant.Text, txtDate.Text, txtEvtId2.Text);
            pbApplyChanges.PerformStep();
        }
        Cursor.Current = Cursors.Arrow;
        MessageBox.Show("Job done");
    }
Run Code Online (Sandbox Code Playgroud)

在呼叫我用的Program.cs和我的主要方法有我的单一实例(changeElements)使用4字符串参数,可以说都是从信息的表格上当受骗!(我想这是有点不好的做法,但它迄今的工作...)

当我尝试用backgroundWorker替换此方法调用时(它自己进行了方法调用),我失败了,因为甚至没有进行方法调用...我发现无法从BW线程访问UI元素,因此我想这也是不工作我的方法调用的原因?

那么,如何能得到这个星座的工作?我是否必须将所有4个字符串参数和(Program.cs的)类实例传递给后台工作人员?是BW即使是工作的最佳工具?

c# backgroundworker winforms

-1
推荐指数
1
解决办法
6661
查看次数

Backgroundworker阻止Pageload

我正在尝试从Entity Framework加载大量数据.请求大约需要一分钟,并阻止页面加载.由于这对于较大的查询变得不合理,我想我会尝试使用后台线程或类似的东西.经过一段时间的研究,我找到了一种名为BackgroundWorker的东西.我试图实现这个但它不起作用.这是我的代码:

  void Page_LoadComplete(object sender, EventArgs e)
    {
        InitializeBackgroundWorker();
    }

    private void InitializeBackgroundWorker()
    {
        bw = new BackgroundWorker {WorkerReportsProgress = true};


        bw.DoWork += (sender, e) => e.Result = (List<object>)e.Argument;
        bw.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged);
        bw.RunWorkerAsync(doSomething());

        bw.RunWorkerCompleted += (sender, e) =>
        {
            AjaxWaitBox.Text = "Completed";
        };
    }
        private readonly Func<List<object>> doSomething = () =>
    {

        var list = ObjectFactory.Container.GetInstance<IActivityRepository>().GetAllActivitiesNotFiltered(ContentReference.RootPage);
        var count = list.Count;
        int i = 0;
        foreach (var item in list)
        {
            i++;
            Console.WriteLine("-(DoWork)->" + i);
            double percentage = (Convert.ToDouble(i) / …
Run Code Online (Sandbox Code Playgroud)

c# multithreading task backgroundworker async-await

-1
推荐指数
1
解决办法
167
查看次数

如何在没有多线程的情况下在 wpf 中使用进度条?

请帮忙。

我想在从数据库中读取时使用 IsIndeterminate= true 属性查看进度条的变化。

我知道我可以使用 Task 和 BackgroundWorker 创建另一个线程。但对我来说,非常重要的是,我不会离开进行长期操作的方法,直到它完成。在这种情况下可以做什么?

PS对不起我的英语:)

c# wpf task backgroundworker progress-bar

-1
推荐指数
1
解决办法
108
查看次数