标签: multithreading

调用线程无法访问此对象,因为另一个线程拥有它

我的代码如下

public CountryStandards()
{
    InitializeComponent();
    try
    {
        FillPageControls();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "Country Standards", MessageBoxButton.OK, MessageBoxImage.Error);
    }
}

/// <summary>
/// Fills the page controls.
/// </summary>
private void FillPageControls()
{
    popUpProgressBar.IsOpen = true;
    lblProgress.Content = "Loading. Please wait...";
    progress.IsIndeterminate = true;
    worker = new BackgroundWorker();
    worker.DoWork += new System.ComponentModel.DoWorkEventHandler(worker_DoWork);
    worker.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(worker_ProgressChanged);
    worker.WorkerReportsProgress = true;
    worker.WorkerSupportsCancellation = true;
    worker.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
    worker.RunWorkerAsync();                    
}

private void worker_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
{
    GetGridData(null, 0); // filling grid …
Run Code Online (Sandbox Code Playgroud)

c# wpf multithreading backgroundworker

310
推荐指数
10
解决办法
24万
查看次数

任务与线程差异

我是并行编程的新手..NET中有两个类:TaskThread.

所以,问题是:这些课程有什么区别?何时更好地使用Thread何时Task

.net c# multithreading task

307
推荐指数
4
解决办法
24万
查看次数

如果可以使用synchronized(this),为什么要使用ReentrantLock?

我试图理解是什么让并发锁如此重要,如果可以使用synchronized (this).在下面的虚拟代码中,我可以做到:

  1. 同步整个方法或同步易受攻击的区域(synchronized(this){...})
  2. 或者使用ReentrantLock锁定易受攻击的代码区域.

码:

    private final ReentrantLock lock = new ReentrantLock(); 
    private static List<Integer> ints;

    public Integer getResult(String name) { 
        .
        .
        .
        lock.lock();
        try {
            if (ints.size()==3) {
                ints=null;
                return -9;
            }   

            for (int x=0; x<ints.size(); x++) {
                System.out.println("["+name+"] "+x+"/"+ints.size()+". values >>>>"+ints.get(x));
            }

        } finally {
            lock.unlock();
        } 
        return random;
}
Run Code Online (Sandbox Code Playgroud)

java concurrency multithreading synchronize reentrantlock

306
推荐指数
5
解决办法
14万
查看次数

从线程获取线程ID

例如,在调试线程的C#中,您可以看到每个线程的ID.

我无法通过编程方式找到获得相同线程的方法.我甚至无法获得当前线程的ID(在属性中Thread.currentThread).

所以,我想知道Visual Studio如何获取线程的ID,并且有没有办法获取带有id的线程的句柄2345,例如?

.net c# multithreading

304
推荐指数
11
解决办法
31万
查看次数

C#版的java的synchronized关键字?

c#是否有自己的java"synchronized"关键字版本?

即在java中,它可以指定为函数,对象或代码块,如下所示:

public synchronized void doImportantStuff() {
   // dangerous code goes here.
}
Run Code Online (Sandbox Code Playgroud)

要么

public void doImportantStuff() {
   // trivial stuff

   synchronized(someLock) {
      // dangerous code goes here.
   }
}
Run Code Online (Sandbox Code Playgroud)

c# java multithreading synchronization

303
推荐指数
5
解决办法
17万
查看次数

使用模块'subprocess'和超时

这是运行任意命令返回其stdout数据的Python代码,或者在非零退出代码上引发异常:

proc = subprocess.Popen(
    cmd,
    stderr=subprocess.STDOUT,  # Merge stdout and stderr
    stdout=subprocess.PIPE,
    shell=True)
Run Code Online (Sandbox Code Playgroud)

communicate 用于等待进程退出:

stdoutdata, stderrdata = proc.communicate()
Run Code Online (Sandbox Code Playgroud)

subprocess模块不支持超时 - 能够终止运行超过X秒的进程 - 因此,communicate可能需要永久运行.

在旨在在Windows和Linux上运行的Python程序中实现超时的最简单方法是什么?

python multithreading subprocess timeout

303
推荐指数
15
解决办法
26万
查看次数

从另一个线程在主线程中运行代码

在android服务中,我创建了一些用于执行某些后台任务的线程.

我有一种情况,线程需要在主线程的消息队列上发布某些任务,例如a Runnable.

有没有办法获得Handler主线程并从我的其他线程发布Message/ Runnable到它?

谢谢,

java multithreading android android-handler

302
推荐指数
11
解决办法
25万
查看次数

如何在swift中使用后台线程?

如何在swift中使用线程?

dispatchOnMainThread:^{

    NSLog(@"Block Executed On %s", dispatch_queue_get_label(dispatch_get_current_queue()));

}];
Run Code Online (Sandbox Code Playgroud)

multithreading ios swift dispatch-queue

298
推荐指数
12
解决办法
23万
查看次数

有多少线程太多了?

我正在编写一个服务器,当请求传入时,我将每个动作分支到一个线程中.我这样做是因为几乎每个请求都进行数据库查询.我正在使用线程池库来减少线程的构造/销毁.

我的问题是 - 像这样的I/O线程有什么好的截止点?我知道这只是一个粗略的估计,但我们是在说几百个?成千上万的?


编辑:

谢谢大家的回复,似乎我只是要测试它以找出我的线程数上限.问题是:我怎么知道我达到了这个上限?究竟应该测量什么?

performance multithreading threadpool

291
推荐指数
7
解决办法
20万
查看次数

什么时候应该在C#中使用volatile关键字?

任何人都可以在C#中对volatile关键字提供一个很好的解释吗?它解决了哪些问题,哪些问题没有解决?在哪些情况下它会节省我使用锁定?

c# multithreading

290
推荐指数
8
解决办法
8万
查看次数