В ASP.NET File.Create не работает в обработчике событий таймера. - PullRequest
0 голосов
/ 23 сентября 2018

Это мой код таймера:

private static System.Timers.Timer CSVTimer; 

public static void CSVTimer_Start() 
{
    CSVTimer = new System.Timers.Timer();
    CSVTimer.Interval = 10000;  
    CSVTimer.Elapsed += TCSVCreatEvent; 
    CSVTimer.AutoReset = true;
    CSVTimer.Enabled = true;    
}

public static string s = "";

private static void TCSVCreatEvent(Object source, System.Timers.ElapsedEventArgs e)
{
    s += "[ADD0]";
    DatabaseController DC = new DatabaseController();
    string systempath = @"C:\inetpub\wwwroot\DiceGameServerPath\File\SuibaoFile";
    string FileName = DateTime.Now.AddDays(-1).ToString("yyyy_MM_dd_HHmmss") + ".csv";
    string text = "test0,test1,test2" + Environment.NewLine;
    //text += DC.ReturnYesterdayData();
    s += "[ADD1]";

    if (!File.Exists(systempath + FileName))
    {
        s += "[ADD2]";
        var NewFile = File.Create(systempath + FileName);
        s += "[ADD3]";
        NewFile.Close();
        s += "[ADD4]";
        FileStream fs = new FileStream(systempath + FileName, FileMode.Open, FileAccess.Write);
        s += "[ADD5]";
        StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.GetEncoding("utf-8"));
        s += "[ADD6]";
        sw.Write(text);
        s += "[ADD7]";
        sw.Close();
        s += "[ADD8]";
    }
}

Я пытаюсь использовать этот код для записи файла .csv, но он не работает.

Я печатаю s чтобы посмотреть, где остановиться, я останавливаю код на «[ADD2]»

Затем я копирую TCSVCreatEvent() код и использую кнопку для вызова этого метода, он очень хорошо работает

Так что яНе понимаю, почему тот же код не может работать в таймере?

------------- edit -----------

код остановки в

        var NewFile = File.Create(systempath + FileName);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...