标签: backgroundworker

BackgroundWorker线程:更新UI和中止操作

我在后台工作线程上运行一系列耗时的操作.在不同的阶段,我通过调用委托更新(窗体)进度条.但是,在一行代码中会发生一次更多的时间操作.

是否有可能 :

a)在执行该单行代码时更新UI,或者至少显示一个动画图标,显示用户正在完成工作.

b)让用户在执行该单行代码时取消后台工作线程

backgroundworker

5
推荐指数
1
解决办法
3257
查看次数

背景工人事件处理

我一直在背景工作线程中处理事件处理.

我遇到的所有文档都让我相信,当DoWork事件处理程序抛出异常时,应该在RunWorkerCompleted处理程序中处理异常,并且该异常将在RunWorkerCompletedEventArgs的Error属性中可用.

这很好,但在调试期间,我总是看到用户代码消息未处理的异常.这让我相信我的方法存在问题.

我应该采取什么措施来解决这个问题?

此致,乔纳森

c# debugging multithreading backgroundworker

5
推荐指数
1
解决办法
963
查看次数

Amazon SQS是正确的选择吗?Rails性能问题

我即将发布具有常见网络功能(消息,墙壁等)的rails应用程序.我想使用某种后台处理(很可能是Bj)来从请求/响应周期中卸载任务.

当用户通过电子邮件邀请朋友加入和收发电子邮件时,就会发生这种情况

我不确定是否应该在我的数据库中删除这些邀请和通知,使用模型,然后每隔x分钟使用一个工作进程处理它,或者我是否应该使用Amazon SQS,存储消息并邀请那里并让我的工作人员从Amazon SQS检索它以进行处理(发送邀请/通知).

亚马逊的方法会从我的数据库中卸载,但我想从那里检索消息的速度较慢.

你怎么看?

ruby-on-rails backgroundworker amazon-sqs amazon-web-services

5
推荐指数
1
解决办法
4233
查看次数

填写dataGridView谢谢backGroundWorker

我有这段代码:

private void backgroundWorker1_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
    {
        remplirDataGrid();
    }

private void frmChercherActesLoad(object sender, EventArgs e)
        {
            backgroundWorker1.RunWorkerAsync();

        }



 private void remplirDataGrid()
        {
            dataGridView1.DataSource = ActeServices.getAllActes(0, 40);
            dataGridView1.Columns[0].Visible = false;
            dataGridView1.Columns[1].HeaderText = "Code acte";
            dataGridView1.Columns[2].HeaderText = "Désignation";
            dataGridView1.Columns[3].HeaderText = "Pris en charge";
            dataGridView1.Columns[4].HeaderText = "Id article";
            dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
        }
Run Code Online (Sandbox Code Playgroud)

这是方法getAllActe:

public static IEnumerable<Acte> getAllActes(int skipCount, int takeCount)
        {
            var myTableAdapter = new SmartDocDALServices.SmartDocDataSetTableAdapters.actesTableAdapter();
            myTableAdapter.Fill(myDataSet.actes);
            var myResult = from q in myDataSet.actes.AsEnumerable()
                            select new Acte
                            {
                                code = q.code,
                                designation …
Run Code Online (Sandbox Code Playgroud)

c# data-binding datagridview backgroundworker winforms

5
推荐指数
1
解决办法
2万
查看次数

取消e.result中的后台工作程序异常

我有背景工作者的严重问题.如果任务正常结束,代码正在工作.当我取消后台任务时,我在e.Result的RunWorkerCompleted函数中得到一个system.invalidoperationexception.怎么了?谢谢.

这是我的鳕鱼:

private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
  if (backgroundWorker.CancellationPending == true)
    e.Cancel = true;
  e.Result = resultList;
}


private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
  if (e.Error != null)
    List<Object> resultList = (List<Object>)e.Result;
} 
Run Code Online (Sandbox Code Playgroud)

.net backgroundworker

5
推荐指数
1
解决办法
3456
查看次数

迭代文件结构时更新进度条

我使用这个函数来搜索所选目录中的所有exe文件:

public static IEnumerable<string> GetFiles(string root, string searchPattern)
{
    Stack<string> pending = new Stack<string>();
    pending.Push(root);
    while (pending.Count != 0)
    {
        var path = pending.Pop();
        string[] next = null;
        try
        {
            next = Directory.GetFiles(path, searchPattern);
        }
        catch { }
        if (next != null && next.Length != 0)
            foreach (var file in next) yield return file;
        try
        {
            next = Directory.GetDirectories(path);
            foreach (var subdir in next) pending.Push(subdir);
        }
        catch { }
    }
}
Run Code Online (Sandbox Code Playgroud)

如何根据找到的文件数更新进度条状态?

c# backgroundworker file-search winforms progress-bar

5
推荐指数
1
解决办法
1145
查看次数

UI线程在文本框调用期间冻结

为什么UI在从分离的线程调用的文本框中冻结

    private void button1_Click(object sender, EventArgs e)
    {
        Thread t1 = new Thread(DoStuff);
        t1.Start();
    }

    void DoStuff()
    {
        using (var wc = new System.Net.WebClient())
        {
            string page_src = wc.DownloadString("http://bing.com");
            textBox1.Invoke((MethodInvoker)delegate() { textBox1.Text = page_src; }); // freezes while textbox text is changing
        }
    }
Run Code Online (Sandbox Code Playgroud)

同时backgroundworker工作得很好 - UI不会冻结

    private void button1_Click(object sender, EventArgs e)
    {
        BackgroundWorker bw1 = new BackgroundWorker();
        bw1.DoWork += (a, b) => { DoStuff(); };
        bw1.RunWorkerAsync();
    }

    void DoStuff()
    {
        using (var wc = new System.Net.WebClient())
        {
            string …
Run Code Online (Sandbox Code Playgroud)

c# user-interface multithreading freeze backgroundworker

5
推荐指数
1
解决办法
1367
查看次数

线程/线程池或后台工作者

我想知道什么用于需要很多性能的任务. Backgroundworker,Thread还是ThreadPool

到目前为止,我一直在使用Threads,但我需要提高应用程序的速度.

c# performance multithreading backgroundworker threadpool

5
推荐指数
1
解决办法
5647
查看次数

如何在ruby中运行后台线程?

我是ruby的新手,并认为重建一个我在C#中创建的简单聊天程序是个好主意.

我正在使用Ruby 2.0.0 MRI(Matz的Ruby实现).

问题是我希望在服务器运行时为简单的服务器命令提供I/O. 这是从示例中获取的服务器.我添加了使用gets()获取输入的命令方法.我希望这个方法在后台运行作为一个线程,但该线程阻止了另一个线程.

require 'socket'                # Get sockets from stdlib

server = TCPServer.open(2000)   # Socket to listen on port 2000

def commands
    x = 1
    while x == 1
        exitProgram = gets.chomp
        if exitProgram == "exit" || exitProgram == "Exit"
            x = 2
            abort("Exiting the program.")
        end
    end
end

def main
    Thread.start(commands)
    Thread.start(server.accept) 
    loop {                          # Servers run forever

        Thread.start(server.accept) do |client|
        client.puts(Time.now.ctime) # Send the time to the client
        client.puts "Closing the connection. Bye!"
        client.close                # …
Run Code Online (Sandbox Code Playgroud)

ruby multithreading chat backgroundworker

5
推荐指数
1
解决办法
5898
查看次数

Xamarin.Forms是否支持定期后台任务?

我很难找到有关Xamarin.Forms的后台任务支持的文档.Xamarin.Forms是否为定期后台任务提供支持?

我需要为Windows Phone 10和Android实现这一点.

backgroundworker xamarin xamarin.forms

5
推荐指数
1
解决办法
8494
查看次数