小编was*_*tik的帖子

C#使用ThreadPool执行方法(带参数)

我们有以下代码(在本网站上找到此代码的想法),它将为方法"Do_SomeWork()"生成新线程.这使我们能够异步多次运行该方法.

代码是:

    var numThreads = 20;
    var toProcess = numThreads;

    var resetEvent = new ManualResetEvent(false);

    for (var i = 0; i < numThreads; i++)
    {
        new Thread(delegate()
        {
            Do_SomeWork(Parameter1, Parameter2, Parameter3);
            if (Interlocked.Decrement(ref toProcess) == 0) resetEvent.Set();
        }).Start();
    }

    resetEvent.WaitOne();
Run Code Online (Sandbox Code Playgroud)

但是我们想要使用ThreadPool而不是创建我们自己的新线程,这可能对性能有害.问题是我们如何修改上面的代码以使用ThreadPool,记住方法"Do_SomeWork"采用多个参数并且还有一个返回类型(即方法不是void).

此外,这是C#2.0.

c# parameters multithreading threadpool

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

将64位二进制转换为长度等效

我们如何将以下64位二进制转换为长等效值;

01111101 10100011 01001111 11111111 11111111 11111111 11111111 11000000  
equals 7D A3 4F FF FF FF FF C0 HEX  
equals 9053167636875050944    << this is the value we want in a C# variable 
Run Code Online (Sandbox Code Playgroud)

编辑:大二进制数当前存储为字符串.所以它是我要寻找的长串转换字符串.

c# binary 64-bit hex

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

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

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

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

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

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

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

是否适合使用线程池?

c# file-io multithreading filereader threadpool

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