现在遇到这样些问题:
方案1问题.使用ThreadPool启动编译,如果同时执行两三个,可以正常结束。如果同时执行8个左右,就会报异常,提示“正在中止线程”。(是否是因为主线程已经结束,子线程会跟着结束?如果是,只编译两三个的时候又不会出现这个问题。)
方案2问题.直接将信息发送到webservice执行,在webservice启动多线程。但是浏览器会在等待webservice返回值后才能操作其他页面。
有什么好方法实现我要的效果呢?求助各位大侠!
PS:我用的是mvc3模式,c#语言。
4 个解决方案
#1
你是不是在代码中调用Thread.Abort()了。
#2
没有调用Thread.Abort()。
#3
我在Controller里面的写法如下:
public string Exec()
{
//获取执行的对象
......
//编译
for(int i;i<num;++i){ new Thread(new ThreadStart(事件)).Start(); }
return result;
}
js中调用
function selectExecPack(currentData) {
$.ajax({
url: "/Project/Exec"
, type: 'POST'
, data: currentData
, async: true
, error: function (result) {
}
, success: function (result) {
//.....
}
}
});
}
public string Exec()
{
//获取执行的对象
......
//编译
for(int i;i<num;++i){ new Thread(new ThreadStart(事件)).Start(); }
return result;
}
js中调用
function selectExecPack(currentData) {
$.ajax({
url: "/Project/Exec"
, type: 'POST'
, data: currentData
, async: true
, error: function (result) {
}
, success: function (result) {
//.....
}
}
});
}
#4
OK了,使用webservice 的 Begin....
#1
你是不是在代码中调用Thread.Abort()了。
#2
没有调用Thread.Abort()。
#3
我在Controller里面的写法如下:
public string Exec()
{
//获取执行的对象
......
//编译
for(int i;i<num;++i){ new Thread(new ThreadStart(事件)).Start(); }
return result;
}
js中调用
function selectExecPack(currentData) {
$.ajax({
url: "/Project/Exec"
, type: 'POST'
, data: currentData
, async: true
, error: function (result) {
}
, success: function (result) {
//.....
}
}
});
}
public string Exec()
{
//获取执行的对象
......
//编译
for(int i;i<num;++i){ new Thread(new ThreadStart(事件)).Start(); }
return result;
}
js中调用
function selectExecPack(currentData) {
$.ajax({
url: "/Project/Exec"
, type: 'POST'
, data: currentData
, async: true
, error: function (result) {
}
, success: function (result) {
//.....
}
}
});
}
#4
OK了,使用webservice 的 Begin....