Установить интервал:
<script type="text/javascript">
setInterval(page_refresh, 5*60000); //NOTE: period is passed in milliseconds
</script>
Возиться с трассировкой стека действительно не кажется хорошей идеей, даже если это возможно (я Сомневаюсь в этом). Скажи мне, зачем тебе вообще это нужно? Сама платформа .NET (BCL) часто использует статические служебные методы для генерации исключений, как вы предлагаете ( ThrowHelper
- это его имя по крайней мере в некоторых частях платформы), и, безусловно, скрывает что-нибудь в трассировке стека.
Вот пример трассировки стека из теста, который я только что выполнил:
at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) at System.ThrowHelper.ThrowArgumentOutOfRangeException() at System.Collections.Generic.List`1.get_Item(Int32 index) at HelloWorld.Program.Main(String[] args) in C:\...\Program.cs:line 23 at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args) at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart()
Как видите, BCL использует метод ThrowArgumentOutOfRangeException
, и это четко видно в трассировке стека . Если вы хотите пометить вспомогательный метод атрибутом DebuggerNonUserCode
,
Свойство StackTrace является виртуальным - создайте собственный производный класс Exception и пусть свойство возвращает все, что вы хотите.