asp.net 线程的问题
如上图,更新操作很费时间,大概要等待30秒时间 , 这时候要么是显示一个等待窗口等更新完成,要么是使用线程
如果只是显示一个等待窗口的话,等待的时间有点长,用户肯定不愿意死等.
那使用线程是否能解放这个等待时间呢
我按网上的例子试了一下,新建了线程,可点击更新后,点页面其它地方还是没反应,一直到更新完成才会有反应,
//更新操作
protected void rptweb_ItemCommand(object source, RepeaterCommandEventArgs e)
{
try
{
_ID = Convert.ToInt32(((Label)e.Item.FindControl("lb_id")).Text);//获取要更新的ID
UrlPath = ((Label)e.Item.FindControl("lb_url")).Text;//获取要更新的URL
//新建线程执行更新
ThreadStart mythread = new ThreadStart(UPSEO);
Thread thread = new Thread(mythread);
thread.Start();
Thread.Sleep(30000);
thread.Abort();
}
catch (Exception)
{ }
}
//更新方法
public void UPSEO()
{
}
对线程不是太懂,求解答 ASP.NET 多线程 --------------------编程问答-------------------- http://msdn.microsoft.com/en-us/magazine/cc164051.aspx --------------------编程问答--------------------
看不懂啊,老大 --------------------编程问答-------------------- 怎么没人来啊,来人啊 --------------------编程问答-------------------- 楼主,使用线程池。 --------------------编程问答--------------------
不太懂啊 --------------------编程问答-------------------- http://www.cnblogs.com/xugang/archive/2008/03/23/1118584.html --------------------编程问答-------------------- 有没有实际的办法 --------------------编程问答--------------------
也需要学习 --------------------编程问答-------------------- 更新操作花费30秒,你是不是应该先看一下代码,怎么会花费这么长时间?而不是优先考虑多线程问题. --------------------编程问答-------------------- 建议还是从代码入手,提高更新速度。
多线程的话就用线程池,可以看看这方面的资料 --------------------编程问答-------------------- ProgressBar组件实现实时进度条 --------------------编程问答-------------------- 最简单的方法就是把14,15行去掉。 --------------------编程问答--------------------
因为更新时调用了几个网络接口,所以时间有点长,如果只是更新数据库的话,肯定用不了那么长时间 --------------------编程问答--------------------
正解,可以了
不过开启的线程不用关闭吗?还是他过一段时间自动关闭了 --------------------编程问答--------------------
NO,不会过一段时间自动关闭。
线程在下面几个情况下自动关闭,其中之一就是“The thread function returns.”
你上面 UPSEO()就是指The thread function,它返回的时候,线程就自动关闭。
http://msdn.microsoft.com/en-us/library/ms686724%28v=vs.85%29.aspx --------------------编程问答--------------------
最简单的方法就是把14,15行去掉。
正解,可以了
不过开启的线程不用关闭吗?还是他过一段时间自动关闭了
NO,不会过一段时间自动关闭。
线程在下面几个情况下自动关闭,其中之一就是“The thread function returns.”
你上面 UPSEO()就是指The thread function,它返回的时候,线程就自动关闭。
http://msdn.microsoft.com/en-us/library/ms686724%28v=vs.85%29.aspx
我的UPSEO没有返回值
还有根据上面的写法,当我点击一个更新后又点击另一个更新按钮,这时候是有两个线程呢,还是把第一次点击的那个线程给替换掉了? --------------------编程问答--------------------
ThreadStart mythread = new ThreadStart(UPSEO);
在掉用UPSEO的时候可不可以传参
例如:
ThreadStart mythread = new ThreadStart(UPSEO(id,path));这样写 --------------------编程问答--------------------
最简单的方法就是把14,15行去掉。
正解,可以了
不过开启的线程不用关闭吗?还是他过一段时间自动关闭了
NO,不会过一段时间自动关闭。
线程在下面几个情况下自动关闭,其中之一就是“The thread function returns.”
你上面 UPSEO()就是指The thread function,它返回的时候,线程就自动关闭。
http://msdn.microsoft.com/en-us/library/ms686724%28v=vs.85%29.aspx
我的UPSEO没有返回值
还有根据上面的写法,当我点击一个更新后又点击另一个更新按钮,这时候是有两个线程呢,还是把第一次点击的那个线程给替换掉了?
不会替换,如果第一个没有结束,那就是2个。 --------------------编程问答-------------------- 传递参数
//更新方法
public void UPSEO(int a, string b)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
Thread mythread = new Thread(delegate()
{
UPSEO(123, "abc");
});
mythread.Start();
} --------------------编程问答-------------------- 还有什么问题,尽管问,别客气。 --------------------编程问答--------------------
还有什么问题,尽管问,别客气。
有点不好意思了都,再问下去,就感觉很易做图了
多谢了 --------------------编程问答--------------------
还有什么问题,尽管问,别客气。
传递参数
//更新方法
public void UPSEO(int a, string b)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
Thread mythread = new Thread(delegate()
{
UPSEO(123, "abc");
});
mythread.Start();
}
像这样,UPSEO没有返回值,这进程怎么结束,如果结束会不会把所有的进程给都结束了 --------------------编程问答--------------------
楼主,使用线程池。
看楼主的回答,我想是大神,不知道对SQl精能不,我想问下,我用Sql去引用另外一个服务器上的视图,就是服务器外链,现在查询的时间大于30秒,用这个可以优化不。 --------------------编程问答--------------------
传递参数
//更新方法
public void UPSEO(int a, string b)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
Thread mythread = new Thread(delegate()
{
UPSEO(123, "abc");
});
mythread.Start();
}
像这样,UPSEO没有返回值,这进程怎么结束,如果结束会不会把所有的进程给都结束了
--------------------编程问答--------------------
传递参数
//更新方法
public void UPSEO(int a, string b)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
Thread mythread = new Thread(delegate()
{
UPSEO(123, "abc");
});
mythread.Start();
}
像这样,UPSEO没有返回值,这进程怎么结束,如果结束会不会把所有的进程给都结束了
这个进程?这个进程是ASP.NET的进程了,不会结束的,因为ASP.NET用CLR ThreadPool处理请求,所以现场不会全部终止,所以ASP.NET进程不会终止。 --------------------编程问答-------------------- 继续问,有啥不好意思的。 --------------------编程问答--------------------
传递参数
//更新方法
public void UPSEO(int a, string b)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
Thread mythread = new Thread(delegate()
{
UPSEO(123, "abc");
});
mythread.Start();
}
像这样,UPSEO没有返回值,这进程怎么结束,如果结束会不会把所有的进程给都结束了
这个进程?这个进程是ASP.NET的进程了,不会结束的,因为ASP.NET用CLR ThreadPool处理请求,所以现场不会全部终止,所以ASP.NET进程不会终止。
不是进程 是线程 --------------------编程问答--------------------
继续问,有啥不好意思的。
大神,你真是太好了
补充:.NET技术 , ASP.NET