相关疑难解决方法(0)

C#中简单线程池的代码

寻找一些简单的线程池实现的示例代码(C#).

我在codeproject上找到了一个,但代码库很大,我不需要所有的功能.

无论如何,这更多是出于教育目的.

.net c# multithreading threadpool

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

BeginInvoke()是否运行单独的线程?

在我的WPF应用程序中,我想在非UI线程中做一些工作,以避免UI变得无响应.为此我做了这个:

var caller = new AsyncMethodCaller<Pattern>(this.SetPatternType);
caller.BeginInvoke(_patterns, null, null);
Run Code Online (Sandbox Code Playgroud)

代表被定义为,

public delegate void AsyncMethodCaller<in T>(IEnumerable<T> data);
Run Code Online (Sandbox Code Playgroud)

我的问题是:

是否BeginInvoke()创建一个新线程并在其中SetPatternType运行回调?如果是这样,这个帖子持续多久?

这种方法总的来说好吗?如果没有,它有什么问题?我可能面临哪些潜在的问题?

我正在使用C#4.0和Visual Studio 2010.


编辑:

我还需要一些关于这些的指导原则:

什么时候我应该自己创建一个新线程,何时应该使用BeginInvoke()?什么时候应该使用DispatcherObject.Dispatcher.BeginInvoke()对象?

c# wpf multithreading delegates begininvoke

9
推荐指数
2
解决办法
7130
查看次数

多线程与多实例 - 选择哪个?

这两种情况之间是否会有很大差异:

  1. 一个应用程序实例创建100个线程来处理一些作业
  2. 同一个应用程序的10个实例分别创建10个线程来处理作业(共100个)

两种情况下的线程数都是相同的.是一种表现还是一种改进?

实例 - 例如控制台应用程序,因此在第二种情况下它将运行10个控制台应用程序.每个应用程序都有自己的文件夹.

.net c# multithreading

9
推荐指数
1
解决办法
3399
查看次数

如何在.NET中最有效地利用多个内核进行简短计算?

下面是上下文:我正在用C#编写一个名为Heron的小编程语言的解释器,它有一些可以并行执行的原始列表操作.

我面临的最大挑战之一是,只要遇到可并行化的操作,就可以有效地将评估者完成的工作分配到不同的核心.这可以是短期或长期操作,很难提前确定.

我不必担心的一件事是同步数据:显然不允许并行操作来修改数据.

所以我的主要问题是:

  • 跨线程分配工作的最有效方法是什么,以便我可以保证计算机将工作分配到两个核心?

我也对一个相关问题感兴趣:

  • 在我们开始克服将工作分离到另一个线程的开销之前,操作需要多长时间?

.net c# performance multithreading multicore

8
推荐指数
2
解决办法
3245
查看次数

C#多线程

让我说我有一个事件,每个秒被解雇10次

void Session_OnEvent(object sender, CustomEventArgs e)
{
  //DoStuff

  DoLongOperation(e);
}
Run Code Online (Sandbox Code Playgroud)

我想要方法DoLongOperation(e); 每次事件被触发时在一个单独的线程上处理,

我可以这样做:

new Thread(DoLongOperation).Start(e);
Run Code Online (Sandbox Code Playgroud)

但我觉得这对性能不好,我想达到最佳性能,那么我能做的最好的事情是什么?

谢谢你...

编辑:当我说多长时间我并不意味着一个操作最多需要超过1秒它只是我不希望事件等待那个时间所以我想在分开的线程中做出...

c# multithreading

4
推荐指数
1
解决办法
979
查看次数

VS2005 c#多线程:如何启动10个线程

启动10个线程的最佳方法是什么,如for循环中的流程密集型方法.代码示例非常有用.

for (int i = 0; i<=10; i++) //10 threads are intended.
{
    LongRunningMethod();
}
Run Code Online (Sandbox Code Playgroud)

c# multithreading

3
推荐指数
1
解决办法
1171
查看次数

WCF:在服务器上生成异步工作线程是否安全?

我有一个WCF服务方法,我想异步执行一些操作(这样返回调用者几乎没有额外的延迟).在方法中生成System.ComponentModel.BackgroundWorker是否安全?我实际上是用它来调用其他一个服务方法,所以如果有办法异步调用其中一个,那就可以了.

BackgroundWorker是一种可行的方式,或者在WCF服务中有更好的方法或问题吗?

wcf asynchronous

3
推荐指数
1
解决办法
954
查看次数

C#多线程文件IO(读取)

我们的应用程序需要处理一系列文件,而不是同步执行此功能,我们希望使用多线程将工作负载分配到不同的线程中.

每项工作如下:
1.打开文件以进行只读
2.处理文件中的数据
3.将处理后的数据写入字典

我们想在新线程上执行每个文件的工作?这是可能的,我们应该更好地使用ThreadPool或生成新线程,记住每个"工作"项只需要30ms,但可能需要处理数百个文件.

任何提高效率的想法都值得赞赏.

编辑:目前我们正在利用ThreadPool来处理这个问题.如果我们有500个要处理的文件,我们循环访问文件并使用QueueUserWorkItem将每个"处理工作单元"分配给线程池.

是否适合使用线程池?

c# file-io multithreading filereader threadpool

3
推荐指数
1
解决办法
7098
查看次数