単純なウィンドウサービスを作成していますが、デバッグするときに「ネイティブフレームがコールの先頭にあるため式を評価できませんスタック。"。また、Releaseでサービスをビルドして実行すると、ハングするだけです。ネイティブフレームがコールスタックの上にあるため式を評価できません
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[] { new MyService1() };
ServiceBase.Run(ServicesToRun);
}
これは、通常はServiceBase.Run(ServicesToRun)行にハングするProgram.csファイルにあります。
私が見つけたことは、コードが最適化されているか、asp.netとresponse.redirectを処理する必要があるため、評価されていない式だけです。
サービスコード。
public TruckRateClearService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
tmrProcess.Enabled = true;
}
protected override void OnCustomCommand(int command)
{
base.OnCustomCommand(command);
if (command == 129)
{
OnStart(null);
}
}
protected override void OnStop()
{
tmrProcess.Enabled = false;
}
private void tmrProcess_Tick(object sender, EventArgs e)
{
tmrProcess.Enabled = false;
try
{
eventLog.WriteEntry("Clearing Truck Rates Start" + DateTime.Now.ToString());
TruckRateClearingAgent.Process();
eventLog.WriteEntry("Clearing Truck Rates Finished" + DateTime.Now.ToString());
}
catch (Exception ex)
{
eventLog.WriteEntry(ex.ToString(), EventLogEntryType.Error);
}
tmrProcess.Enabled = true;
}
internal void Run()
{
tmrProcess_Tick(tmrProcess, null);
}
ErenErsönmezのコメントの提案に、Internal Void Run()が最近追加されました。彼の考えは、私が残りを把握できるようになるまで、私のロジックをデバッグするのに非常に役立っています。
Nativeコールスタックに入ることができました。それは、1つの場所、76F17094 retにあります。今私はこれが何であるか分かりませんが、他の誰かがそうするかもしれません。
また、私がサービスを開始し、それをVSに接続すると、2つのインスタンスに気付いています。 1つは通常の.exe、もう1つは.vshost.exeです。他のサービスを開始すると、デバッガのAttach to Process部分にある.exeファイルのみが表示されます。これは、v4 Framework(.vshost.exeサービス)とv2(単一の.exeサービス)Framework上にあるためですか?
私はそれが働いていると思います。問題は私が使っていたタイマーで嘘をついたようです。私が使用していた元のタイマーは、System.Windows.Formsタイマーでした。私はそれをSystem.Timers.Timersに切り替え、すべてが再び働き始めました。それでもVSを添付することはできませんが、Internal Run()メソッドを使用してそれをデバッグすることはできます。
私はすべてを置いて、コマンドを実行し、それは働いた。しかし、私がその機能を踏んだとき、私はそれ以上進歩させられませんでした。そして私がDebug-> Break Allに行ったとき、それはサービスが失敗していたのと同じ時点でした。私はここで何か間違っていると思う。 –
どのような障害が発生していますか?ハングまたは例外? –
私は前に "表現を評価できませんでした..."と同じでした。サービスはServiceBase.Run(ServicesToRun)部分にハングアップするだけでしたか? –