多线程同步等待 导致主界面UI卡顿,求解~~~
描述如下,有N个用户,我执行如下操作逻辑, FOR第一个循环,开 N个线程执行登陆操作,执行完毕后 (线程同步后),执行拨号操作,由于我使用线程同步,导致主界面UI卡顿,求解,如何破。。。
使用线程同步类 http://www.cnblogs.com/charley_yang/archive/2010/11/13/1876626.html
自己的逻辑如下
using (var countdown = new MutipleThreadResetEvent(iNum))
{
for (int j = i; j
{
ThreadPool.UnsafeQueueUserWorkItem(new WaitCallback((object s) =>
{
//登陆操作
GetLoginAndHTMLMethod();
}), null);
}
//等待所有线程执行完毕 ,由于这里执行线程同步,导致主界面卡顿,求解
countdown.WaitAll();
}
//拨号操作
strIP = CheckToChangeIP(i);
------解决方案--------------------
这整个事务都应该在子线程中执行。
------解决方案--------------------
把你的这段代码也放在一个独立的线程中,并且主线程不要和它同步。
------解决方案--------------------
主界面卡了是因为你在主线程中运行了处理逻辑
------解决方案--------------------
//拨号操作
strIP = CheckToChangeIP(i);
你连这些也都应该放到线程里去
否则即使前面同步不卡,后面通信也会卡.
------解决方案--------------------
------解决方案--------------------
new System.Threading.Thread(() => {
using (var countdown = new MutipleThreadResetEvent(iNum)) {
for (int j = i; j
ThreadPool.UnsafeQueueUserWorkItem(new WaitCallback((object s) => {
//登陆操作
GetLoginAndHTMLMethod();
}), null);
}
//等待所有线程执行完毕 ,由于这里执行线程同步,导致主界面卡顿,求解
countdown.WaitAll();
}
//拨号操作
strIP = CheckToChangeIP(i);
}).Start();