0
私はナッツに行きます。私は問題を理解することはできません。Windowsサービスでのイベントハンドラの問題
私は単純なタイマーメソッドを持つWindowsサービスを持っています。サービスを開始すると、onTimerElapsedイベントで常に例外が送出されます。しかし、XMLOperationメソッドを別のメソッド(ただし、必要なタイマーではない)に書き込み、program.csから呼び出すと、うまくいきます。作業コードも最下部にあります。
partial class DatabaseService : ServiceBase
{
Timer timer = new Timer();
public DatabaseService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
timer.Interval = 10000;
timer.Enabled = true;
timer.Elapsed += new ElapsedEventHandler(onElapsedTime);
timer.Start();
}
protected override void OnStop()
{
timer.Enabled = false;
}
public void onElapsedTime(object source, ElapsedEventArgs e)
{
try
{
XMLOperations operation = new XMLOperations();
operation.WebServiceFlexiCampaigns("http://www.flexi.com.tr/data/xml/pazaryeri/mobil.xml");
operation.WebServiceShopMilesCampaignsXMLRead("http://www.shopandmiles.com/xml/3_119_3.xml");
operation.WebServiceBonusCampaignsXMLRead("http://www.bonus.com.tr/apps/getcampaignxml.aspx?type=campaigns");
}
catch (Exception ex)
{
StreamWriter SW;
SW = File.CreateText("c:\\1.txt");
SW.WriteLine(ex.Message);
SW.Close();
}
}
ここでは動作しますが、今回はタイマーイベントのように時間内にそのコードを処理できませんでした。私はあなたが(SamAgain応答を参照してください)このスレッドを試すことができますProgram.csの
partial class DatabaseService : ServiceBase
{
Timer timer = new Timer();
public DatabaseService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
timer.Interval = 10000;
timer.Enabled = true;
timer.Elapsed += new ElapsedEventHandler(onElapsedTime);
timer.Start();
}
protected override void OnStop()
{
timer.Enabled = false;
}
public void test()
{
try
{
XMLOperations operation = new XMLOperations();
operation.WebServiceFlexiCampaigns("http://www.flexi.com.tr/data/xml/pazaryeri/mobil.xml");
operation.WebServiceShopMilesCampaignsXMLRead("http://www.shopandmiles.com/xml/3_119_3.xml");
operation.WebServiceBonusCampaignsXMLRead("http://www.bonus.com.tr/apps/getcampaignxml.aspx?type=campaigns");
}
catch (Exception ex)
{
StreamWriter SW;
SW = File.CreateText("c:\\1111.txt");
SW.WriteLine(ex.Message);
SW.Close();
}
}
を使用すると、(StreamWriter SW = File.CreateText( "c:\\ 1111.txt")){SW.WriteLine(ex.Message);を使用する必要があります。 } –
例外はスローされますか? –
失敗したバージョンから '1.txt'に出力される出力を投稿できると便利です。私の推測は、サービスの権限の問題です。それはどのアカウントで実行されますか?実際の(非サービス)コードを実行する際のログインIDと同じですか? –