Клиент-серверное приложение. Переменная из события таймера - C#
Формулировка задачи:
Подскажите пожалуйста, есть клиент, который должен на сервер отправлять определенное сообщение через равный интервал времени, к примеру 10 секунд. Не совсем понимаю, как из MessageEvent вытянуть переменную, чтоб потом ее использовать в методе Main. В переменной храниться в формате строки число от 1 до N и DateTime.Now. Вот код:
namespace Client
{
class Program
{
const int port = 8888;
const string address = "127.0.0.1";
static string message;
static int packNum = 0;
public static void MessageEvent(object source, ElapsedEventArgs e)
{
message = string.Format("{0}: {1}", packNum++, DateTime.Now);
}
static void Main(string[] args)
{
TcpClient client = null;
try
{
client = new TcpClient(address, port);
NetworkStream stream = client.GetStream();
while (true)
{
System.Timers.Timer myTimer = new System.Timers.Timer();
myTimer.Elapsed += new ElapsedEventHandler(MessageEvent);
myTimer.Interval = 10000;
myTimer.Start();
byte[] data = Encoding.Unicode.GetBytes(message); //вот сюда нужно передать переменную message из MessageEvent
// отправка сообщения
stream.Write(data, 0, data.Length);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
client.Close();
}
}
}
}Решение задачи: «Клиент-серверное приложение. Переменная из события таймера»
textual
Листинг программы
namespace Client
{
class Program
{
static void Main(string[] args)
{
try
{
TcpWriter tcpWriter = new TcpWriter(8888, "127.0.0.1", 100);
tcpWriter.Run();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.ReadLine();
}
}
class TcpWriter
{
TcpClient client;
NetworkStream stream;
int packNum = 0;
int maxPackNum;
public TcpWriter(int port, string address, int maxPackNum)
{
client = new TcpClient(address, port);
stream = client.GetStream();
this.maxPackNum = maxPackNum;
}
public void Run()
{
System.Timers.Timer myTimer = new System.Timers.Timer();
myTimer.Elapsed += new ElapsedEventHandler(MessageEvent);
myTimer.Interval = 1000;
myTimer.Start();
}
public void MessageEvent(object source, ElapsedEventArgs e)
{
string message = string.Format("{0}: {1}", packNum++, DateTime.Now);
byte[] data = Encoding.Unicode.GetBytes(message);
stream.Write(data, 0, data.Length);
if (packNum > maxPackNum)
{
(source as System.Timers.Timer).Stop();
client.Close();
}
}
}
}