当前位置:编程学习 > C#/ASP.NET >>

求按时间终止程序的asp.net代码

我的asp.net程序经常超时,或因为处理内容过多而崩溃。
求一段asp.net代码:如果30秒内程序没有结束,就关闭进程退出程序,并弹出提示。
(如果您能给出现成的asp.net代码,也顺便看看这个asp的同样问题吧:http://bbs.csdn.net/topics/390350830) --------------------编程问答-------------------- 用线程解决,至于代码,参考这里
http://www.wzsky.net/html/Program/net/30495.html --------------------编程问答--------------------
引用 1 楼 vajoy 的回复:
用线程解决,至于代码,参考这里
http://www.wzsky.net/html/Program/net/30495.html

谢谢!可我不是程序员,可以给我能用的具体代码吗?直接求代码! --------------------编程问答--------------------  <script language="javascript" type="text/javascript">
        window.onload = function () {
            setTimeout(function () { window.close(); }, 30000);
        }
 </script>
线程?timer?
--------------------编程问答--------------------
引用 3 楼 hjywyj 的回复:
<script language="javascript" type="text/javascript">
        window.onload = function () {
            setTimeout(function () { window.close(); }, 30000);
        }
 </script>
线程?timer?

大致看懂了。但这样强行关闭窗口程序会出错吧?能不能不关闭窗口,先关闭掉net进程,再在页面里给用户提示? --------------------编程问答-------------------- 你还是先解决自己程序问题吧。不解决,都不应该拿上去给用户用。如果解决了,何必为了几乎不可能出现的问题再纠结呢?

把精力放在解决自己程序设计问题上,避免有超过10秒钟(这么久)的响应页面,这才是应该做的。 --------------------编程问答-------------------- 不是程序员那么最好不要对程序员的工作进行“比划”,还是交给程序员来设计和编程。 --------------------编程问答-------------------- 最好还是优化程序逻辑吧 --------------------编程问答--------------------
引用 5 楼 sp1234 的回复:
你还是先解决自己程序问题吧。不解决,都不应该拿上去给用户用。如果解决了,何必为了几乎不可能出现的问题再纠结呢?

把精力放在解决自己程序设计问题上,避免有超过10秒钟(这么久)的响应页面,这才是应该做的。

一瓢冷水啊不是程序员就不能有这个爱好吗
问题早就查清了,但是不知道该怎样具体解决,所以来问的!
是某些用户提交内容过多或过于复杂造成的——我具体测试过!
设置30秒,就是想限制一下。而且,单纯设置用户提交的内容多少不可取——用户提交同样的内容长度,但复杂程度不一样——处理起来相差很多!
所以就想用程序处理时间来衡量——时间长的就停止并提示用户注意简化提交的内容! --------------------编程问答-------------------- 用timer吧

http://www.360doc.com/content/11/0705/07/19147_131544251.shtml --------------------编程问答--------------------
引用 9 楼 xiongxyt2 的回复:
用timer吧

http://www.360doc.com/content/11/0705/07/19147_131544251.shtml

“局限性:可以解决应用程序池自动或者手动回收,但是无法解决IIS重启或者服务器重启的问题”
我在iis设置了虚拟内存回收和时间回收双重限制,网站运行没问题。但这是权宜之计,出错的时候对用户很不友好!我是想直接在程序里做限制——限制时间!超时就关闭程序,并给用户必要的提示! --------------------编程问答--------------------
引用 6 楼 sp1234 的回复:
不是程序员那么最好不要对程序员的工作进行“比划”,还是交给程序员来设计和编程。

通过百度应用审核的程序,应该不算很烂吧
程序响应时间不是我能控制的,用户提交内容简单的话,3秒内解决!但是有不到1%的用户提交的内容很复杂,处理的时候cpu和内存超限——我想限制的就是这部分用户!这些用户提交等待一两分钟出错后,往往会反复提交,我想做的就是在程序出错前提示他们——这才是我想做的。 --------------------编程问答--------------------
引用 3 楼 hjywyj 的回复:
<script language="javascript" type="text/javascript">
        window.onload = function () {
            setTimeout(function () { window.close(); }, 30000);
        }
 </script>
线程?t……

这没看懂。
如果我没理解错,这个脚本的意思为:客户端页面加载完后30秒时,关闭窗口。
我不懂这样做的意义,(我打开页面后,什么也不做,30秒后页面直接关闭了,作为用户,我只会感到莫名其妙)这与问题的解决有何相关性,希望大神指点。 --------------------编程问答-------------------- 如果程序在规定的时间内没有结束就关闭程序释放内存,并提示用户出现错误。
这个语句该怎么写? --------------------编程问答-------------------- 高手在哪里? --------------------编程问答-------------------- 听你说,你那个web服务器,是用来解决问题的,如果复杂问题,可能会导致cpu和内存超限,那说明你的web服务器不给力,压根就不应该让web服务器来处理大运算
可以弄一个服务器来解决硬件上的缺失
--------------------编程问答--------------------
引用 15 楼 yxw545061402 的回复:
听你说,你那个web服务器,是用来解决问题的,如果复杂问题,可能会导致cpu和内存超限,那说明你的web服务器不给力,压根就不应该让web服务器来处理大运算
可以弄一个服务器来解决硬件上的缺失

我不想为了满足极少数用户的要求升级硬件,只想限制一下那些不足百分之一用户提交太多、太复杂的内容!
我只求按时间终止程序的asp.net代码! --------------------编程问答-------------------- [size=36px]求按时间终止程序的asp.net代码![/size] --------------------编程问答-------------------- 用多线程的话
子线程处理提交内容,主线程sleep 30秒,子线程处理玩后唤醒主线程直接返回,主线程等待30秒后检查子线程还未完成就强制终止子线程并返回警告

不过,我觉得你应该先对输入的数据进行验证,估计执行时间,不符合的就直接弹出警告。 --------------------编程问答-------------------- 还是结合js+Ajax吧 ,楼主的意思是说超过30秒还没有提交成功,就返回失败吗? --------------------编程问答--------------------
引用 18 楼 ltcszk 的回复:
用多线程的话
子线程处理提交内容,主线程sleep 30秒,子线程处理玩后唤醒主线程直接返回,主线程等待30秒后检查子线程还未完成就强制终止子线程并返回警告

不过,我觉得你应该先对输入的数据进行验证,估计执行时间,不符合的就直接弹出警告。

对输入的数据进行验证比较困难才想到这一步的。双线程的思路很好,能给个示例代码吗? --------------------编程问答-------------------- 使用等待句柄判断超时,
if(超时){
//to do
} --------------------编程问答--------------------
引用 21 楼 huda3016 的回复:
使用等待句柄判断超时,
if(超时){
//to do
}

谢谢!思路已经有了,这个代码该怎么写呢?我不是程序员,拜托写详细些好吗? --------------------编程问答-------------------- 因为用户提交数据“复杂”,所以提交到一半你就结束程序? --------------------编程问答--------------------
引用 16 楼 cde32 的回复:
我不想为了满足极少数用户的要求升级硬件,只想限制一下那些不足百分之一用户提交太多、太复杂的内容!
我只求按时间终止程序的asp.net代码!


最好还是判断用户提交的内容。通过时间没法判断,因为request已经提交了,即使browser关闭了,服务器还是会处理这个request的。 --------------------编程问答--------------------
这个问题的根本还是在程序上。程序上不处理,用偏方来解决只能又想一个其它方法来堵另外一个漏洞 --------------------编程问答--------------------
引用 24 楼 findcaiyzh 的回复:
引用 16 楼 cde32 的回复:
我不想为了满足极少数用户的要求升级硬件,只想限制一下那些不足百分之一用户提交太多、太复杂的内容!
我只求按时间终止程序的asp.net代码!

最好还是判断用户提交的内容。通过时间没法判断,因为request已经提交了,即使browser关闭了,服务器还是会处理这个request的。

谢谢!一直在想办法判断用户提交的内容,但是仅从内容多少来判断不可行,所以才出此下策。
“即使browser关闭了,服务器还是会处理这个request的。”我是想在程序里终止处理这个request,释放所有资源后再关闭。思路是这样,但我基础很差,不知是否可行。恳请指点! --------------------编程问答--------------------
引用 25 楼 fengyarongaa 的回复:
这个问题的根本还是在程序上。程序上不处理,用偏方来解决只能又想一个其它方法来堵另外一个漏洞

我在保存的用户提交内容里找到一些导致程序卡死的用户提交,用这些提交内容测试过,应该不是程序的问题——就是用户提交的太多太复杂,占用资源过度导致的。只是很难找到限制方法(比如,有的用户输入的内容不多,但却要用到耗费资源的复杂运算,服务器处理起来很吃力),所以想到程序执行超时就中断处理释放资源,并给用户提示,不知是否可行。
对这种情况,版主有什么好的建议吗?
先谢谢了! --------------------编程问答-------------------- 我觉得这个和你的需求挺像的

Starting and Monitoring a Long Running Task Using Web Forms and AJAX
http://www.codeproject.com/Articles/492789/Starting-and-Monitoring-a-Long-Running-Task-Using

--------------------编程问答--------------------
引用 28 楼 findcaiyzh 的回复:
我觉得这个和你的需求挺像的

Starting and Monitoring a Long Running Task Using Web Forms and AJAX
http://www.codeproject.com/Articles/492789/Starting-and-Monitoring-a-Long-Running-Task-Using

链接打不开,弹出提示:无法打开,已终止操作!
我不怕用户提交打不开页面的远程处理内容——最要命的是有些网站可以打开但速度极慢,导致进程长时间占用!
因为用户提交的内容不可预见,所以很难从源头上控制!正如您说的,即使关闭页面,服务器还是会处理这个request的!
请高手指点! --------------------编程问答-------------------- 谁能给个多线程的例子:
1、主线程运行程序;子线程计时30秒后关闭主线程并释放资源。
2、主线程在30秒内结束,则关闭子线程(子线程需要释放资源吗?) --------------------编程问答-------------------- WaitHandle wait=new AutoResetEvent(true);
//主线程
if(!wait.Wait(30秒))
{
 
//超时
}
//子线程
{
//to do
wait.set();//释放阻塞
} --------------------编程问答--------------------
引用 31 楼 huda3016 的回复:
WaitHandle wait=new AutoResetEvent(true);
//主线程
if(!wait.Wait(30秒))
{

//超时
}
//子线程
{
//to do
wait.set();//释放阻塞
}

似会非会,照你的葫芦画的瓢:
    protected void Page_Load(object sender, EventArgs e)
    {
WaitHandle wait=new AutoResetEvent(true);
//主线程
if(!wait.Wait(30秒))
{
//超时
stream.Close();
fs.Close();//这样能关闭子线程吗?
}

//子线程
{//直接这样写行吗?
//to do 以下是我原来的程序:
……
stream.WriteTo(fs);
stream.Close();
fs.Close();
//以上是我原来的程序

wait.set();//具体该怎样释放阻塞?

   }
这样写应该不对,具体该怎么写呢?
先谢谢了! --------------------编程问答-------------------- 请高手看看我上面的代码,这应该是菜鸟级的问题~~~ --------------------编程问答--------------------
引用 3 楼 hjywyj 的回复:
<script language="javascript" type="text/javascript">
        window.onload = function () {
            setTimeout(function () { window.close(); }, 30000);
        }
 </script>
线程?t……
顶啊 ... --------------------编程问答-------------------- 我在32楼写了代码,哪位高手给改一下啊! --------------------编程问答-------------------- 哪位高手愿意出山啊~~~~~~ --------------------编程问答-------------------- 顶不动就再开一贴!
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,