Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#-线程非常慢_C#_Multithreading - Fatal编程技术网

C#-线程非常慢

C#-线程非常慢,c#,multithreading,C#,Multithreading,我想在不同的线程中加载内容 当我正常调用Load方法时,加载时间约为0.6秒 public void Load() { TLoad(); } private void TLoad() { [....] } 但是如果我使用Thead对象调用TLoad()方法,我会得到难以置信的高加载时间 Thread loadthread; public void Load() { loadthread = new Thread(new ThreadStart(TLoad)); load

我想在不同的线程中加载内容

当我正常调用Load方法时,加载时间约为0.6秒

public void Load()
{
   TLoad();
}
private void TLoad()
{
   [....]
}
但是如果我使用Thead对象调用TLoad()方法,我会得到难以置信的高加载时间

Thread loadthread;
public void Load()
{
   loadthread = new Thread(new ThreadStart(TLoad));
   loadthread.Start();
}
private void TLoad()
{
   [....]
}
比正常加载时间长12到30倍。(7-27秒)


我已经尝试将Thread.Priotity设置为ThreadPriority.High等,但性能没有提高。

我建议使用探查器

当处理被中断时,说线程慢是完全错误的。认真地线程开销将相当于零


很可能您在TLoad中做了一些线程不安全的事情——遗憾的是,您坚持不显示代码。例如,HTML请求可能在同一时间每个域只执行X个。探查器会向您显示这一点。

您是否处于调试状态?您是否正在运行附加的调试器?您是否使用秒表来验证时间?不,我不在调试中。而且:我正在使用
System.DateTime.Now.Ticks
的差异来验证时间。使用
DateTime
来衡量性能是一个常见的错误<代码>日期时间不精确。用秒表代替井、斯里拉姆和一些常识。DateTime并不是很精确,但当它从0.6秒运行到27秒时,我会假设DateTime的粒度约为0.025秒IIRC是完全不相关的。是的,XNA中的ContentManager似乎是个问题。但是我有点恼火,因为除了调用LoadT的线程外,我没有在其他线程中使用它。。这就是为什么我认为它在某种程度上是“半线程安全的”。。但奇怪的是,即使是那些与ContentManager无关的事情似乎也要慢得多。例如,地图生成。我之所以没有发布代码,是因为我认为它与线程无关,因为我没有想到我会使用非线程安全的对象,它必须与调度程序有关。