global.ascx.cs:
private static Timer timer; private static readonly object _syncLock = new object(); protected void Application_Start() { if (timer == null) { lock (_syncLock) { if (timer == null) { timer = new Timer(WriterFile, null, 0, 30 * 1000); } } } } private void WriterFile(object state) { FileStream fs = null; StreamWriter sw = null; try { string path = @"D:\aspnet\MvcApplication5\MvcApplication5"; fs = new FileStream( path+"\\test.txt",FileMode.Append, FileAccess.Write); sw=new StreamWriter(fs); sw.WriteLine(new Random().Next(1, 101)); } catch (Exception ee) { } finally { if (sw != null) { sw.Dispose(); } if (fs != null) { fs.Dispose(); } } }
我个人认为应该不可能吧,毕竟服务端处理一个请求后就释放了所有资源,如果你的这段代码不是针对asp.net页面请求,那还用asp.net做干嘛,控制台程序,winform都可以。
另外有种实现方法,就是记录一个application或session(区分用户)全局变量,如果第一次访问设置它为true,,然后启动你要使用的代码,那些代码可以是其他任何程序。以后访问看到变量为true就不重复启动了
至于在哪加判断,相比你也应该知道
把这个线程要做的事放到另一个(winform、控制台)应用程序中执行。
第一次访问这个页面的时候去调用:
[DllImport("shell32.dll ")]
public static extern int ShellExecute(IntPtr hwnd, StringBuilder lpszOp, StringBuilder lpszFile, StringBuilder lpszParams, StringBuilder lpszDir, int FsShowCmd);
ShellExecute(IntPtr.Zero, new StringBuilder("Open"), new StringBuilder("应用程序名"), new StringBuilder("参数"), new StringBuilder(System.Web.HttpContext.Current.Request.MapPath("应用程序路径")), 1);
买得空间应该不给这么做
@越天:
嗯,有可能,运行应该没问题,可以试下看是什么反应。。