если таймер истек .; я хочу запустить несколько кодов, но ошибка возвращается? - PullRequest
0 голосов
/ 28 января 2010
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Timers;
using System.IO;

namespace TimerApp4
{
    class Program
    {
        public static int k;
        static void Main(string[] args)
        {
            Timer t = new Timer(1000);
            t.Elapsed += new ElapsedEventHandler(SaniyelikIs);
            t.Start();
            k = 0;
            Console.Read();
        }

        static void SaniyelikIs(object o, ElapsedEventArgs a)
        {
            TextWriter tw = null;
            k++;
            if (k == 0)
            {
                tw = new StreamWriter("TextFile1.txt");

                // write a line of text to the file

                tw.WriteLine(DateTime.Now);
            }
            else
                tw.WriteLine(DateTime.Now);


            // close the stream
            tw.Close();

        }
    }
}

я могу запустить его, но "новый StreamWriter (" TextFile1.txt "); "дает мне ошибку: неназначенная локальная переменная. Это результат. Как я могу это исправить

Ответы [ 2 ]

3 голосов
/ 28 января 2010

Вы создаете StreamWriter только в половине true вашего оператора if. Ваш код выглядел бы лучше, если бы это было что-то вроде этого:

    TextWriter tw = new StreamWriter("TextFile1.txt");
    k++;
    if (k == 0)
    {
        // write a line of text to the file
    }
    tw.WriteLine(DateTime.Now);

    // close the stream
    tw.Close();

Тем не менее, я также заметил, что вы инициализируете k нулем и только увеличиваете его, поэтому if (k == 0) всегда будет оценивать false.

0 голосов
/ 28 января 2010

Проблема в логике использования k:

k++;
if (k == 0)

Вы увеличиваете k перед блоком if, что означает, что блок if (k == 0), который создает экземпляр StreamWriter, не ударил. Вместо этого он переходит к блоку else, который пытается использовать tw, но на самом деле он не был создан (все еще нулевой).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...