Windows服务继续失败

时间:2016-06-28 10:14:52

标签: c# .net windows-services

我有一个Windows服务,旨在从Azure服务总线队列中连续检索消息并将其传递给其他队列。我已将此服务部署到其中一台服务器计算机,但不幸的是,该服务在随机时间间隔内保持失败。

我的应用程序处理异常并将它们写入文件。此应用程序的主要目的是连接队列并连续监听所有消息,并且永远不会移动到应用程序停止阶段。我使用的是这个应用程序中的计时器,我不认为这会导致任何问题。我想知道什么是处理错误的最佳方法,并使我的应用程序稳定,下面是代码。提前谢谢。

public partial class Scheduler : ServiceBase
{
    private Timer Scheduletimer = null;

    private string servicenamespace;
    private string issuesecretkey;
    private string sourcequeue;
    private string destinationqueue;

    public Scheduler()
    {
        InitializeComponent();
    }

    protected override void OnStart(string[] args)
    {
        Scheduletimer = new Timer();
        this.Scheduletimer.Interval = 1000;//1 sec
        this.Scheduletimer.Elapsed += new System.Timers.ElapsedEventHandler(this.timer1_Tick);
        Scheduletimer.Enabled = true;
        WriteToFile("Application started : "+DateTime.Now.ToString());
    }

    protected void timer1_Tick(object sender, ElapsedEventArgs e)
    {
        Scheduletimer.Enabled = false;
        WriteToFile("Business logic started : " + DateTime.Now.ToString());
        //Business Logic code goes here
    }


    protected override void OnStop()
    {
        Scheduletimer.Enabled = false;
        WriteToFile("Application stoped : "+DateTime.Now.ToString());
    }

    public void WriteToFile(string text)
    {
        string directory = AppDomain.CurrentDomain.BaseDirectory;
        string logfilepath = directory + "LogFile.txt";


        using (StreamWriter writer = new StreamWriter(logfilepath, true))
        {
            writer.WriteLine(text);
            writer.Close();
        }
    }

    public void WriteErrorsToFile(Exception ex)
    {
        string directory = AppDomain.CurrentDomain.BaseDirectory;
        string Errorlogfilepath = directory + "ErrorLogFile.txt";

        using (StreamWriter writer = new StreamWriter(Errorlogfilepath, true))
        {
            writer.WriteLine("Time Occured: " + DateTime.Now.ToString());
            writer.WriteLine(ex.Message +" "+ DateTime.Now.ToString());
            writer.Close();
        }
    }

0 个答案:

没有答案