может кто-нибудь сказать мне, почему мой код не работает?Вопрос о выпуске на C#
class Connection
{
public static StreamWriter writer;
public static string SERVER;
private static int PORT;
private static string USER;
private static string NICK;
private static string CHANNELS;
private Thread connection;
private Thread ping;
public Connection()
{
connection = new Thread(new ThreadStart(this.Run));
ping = new Thread(new ThreadStart(this.Ping));
}
public void Start(string server, int port, string ident, string realname, string nick, string channels)
{
SERVER = server;
PORT = port;
USER = "USER " + ident + " 8 * :" + realname;
NICK = nick;
CHANNELS = channels;
connection.Start();
}
public void Ping()
{
while (true)
{
try
{
Connection.writer.WriteLine("PING :" + SERVER);
Connection.writer.Flush();
Thread.Sleep(15000);
}
catch (Exception e) { Console.WriteLine(e.ToString()); }
}
}
public void Run()
{
NetworkStream stream;
TcpClient irc;
string inputLine;
StreamReader reader;
try
{
irc = new TcpClient(SERVER, PORT);
stream = irc.GetStream();
reader = new StreamReader(stream);
writer = new StreamWriter(stream);
writer.WriteLine(USER);
writer.Flush();
writer.WriteLine("NICK " + NICK);
writer.Flush();
Thread.Sleep(5000);
writer.WriteLine("JOIN " + CHANNELS);
writer.Flush();
while (true)
{
while ((inputLine = reader.ReadLine()) != null)
{
Console.WriteLine(inputLine);
}
writer.Close();
reader.Close();
irc.Close();
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
Thread.Sleep(5000);
Run();
}
}
}
Он прекрасно подключается к серверу, но пинг Thread и пустоты вообще не функционируют! и я не знаю почему, все кажется правильным, если им не хватает чего-то очень очевидного.
+1 избили меня до этого ... –
Я не верю, что этот пример использует Sleep для синхронизации. Фактически это используется для спящего режима для паузы - например, для Ping каждые 15 секунд или около того. Я бы сказал, что это пример использования Сна законно. –
Возможно, я неправильно понял. Но, похоже, он отправляет запрос на IRC-сервер, ждет некоторое время (хотя сервер обычно пишет правильный ответ), а затем отправляет другой запрос. Поэтому он используется для синхронизации процессов, а не потоков, но тем не менее. Но я изменю свой пост, чтобы быть более осторожным в формулировке. –