1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2025-11-06 09:19:38 +02:00

Attach to debugger is a lot more reliable.

Added system/config ui
rss job only runs enabled jobs
fixed wrong mappings for indexers in settingscontroller
This commit is contained in:
kay.one
2011-04-22 10:09:06 -07:00
parent 8ec72ed432
commit fd32a04d45
9 changed files with 89 additions and 41 deletions

View File

@@ -10,31 +10,27 @@ using System.Collections.Generic;
using System.Runtime.InteropServices;
using EnvDTE;
using EnvDTE80;
using NLog;
using Thread = System.Threading.Thread;
namespace NzbDrone
{
public class ProcessAttacher
{
private static readonly Logger Logger = LogManager.GetLogger("Application");
public static void Attach()
{
for (int i = 0; i < 10; i++)
{
try
{
DTE2 dte2;
dte2 = (DTE2)Marshal.
GetActiveObject("VisualStudio.DTE.10.0");
DTE2 dte2;
dte2 = (DTE2)Marshal.
GetActiveObject("VisualStudio.DTE.10.0");
var pa = new ProcessAttacher(dte2, "iisexpress", 10);
pa.PessimisticAttachManaged();
return;
var pa = new ProcessAttacher(dte2, "iisexpress", 10);
pa.PessimisticAttachManaged();
return;
}
catch
{
Thread.Sleep(500);
}
}
// Get an instance of the currently running Visual Studio IDE.
}

View File

@@ -30,22 +30,16 @@ namespace NzbDrone
IISController.StopServer();
IISController.StartServer();
Process.Start(IISController.AppUrl);
#if DEBUG
//Manually Attach debugger to IISExpress
if (Debugger.IsAttached)
{
try
{
ProcessAttacher.Attach();
}
catch (Exception e)
{
Logger.Warn("Unable to attach to debugger", e);
}
}
Attach();
#endif
Process.Start(IISController.AppUrl);
IISController.IISProcess.WaitForExit();
}
catch (Exception e)
{
@@ -54,6 +48,38 @@ namespace NzbDrone
}
private static void Attach()
{
if (Debugger.IsAttached)
{
Logger.Info("Trying to attach to debugger");
var count = 0;
while (true)
{
try
{
ProcessAttacher.Attach();
Logger.Info("Debugger Attached");
return;
}
catch (Exception e)
{
count++;
if (count > 20)
{
Logger.WarnException("Unable to attach to debugger", e);
return;
}
Thread.Sleep(100);
}
}
}
}
private static void AppDomainException(object excepion)
{