В моем классе Sender
есть два метода:
public void SendMessage(OutgoingMessage msg)
{
try
{
stream.BeginWrite(msg.TcpData, 0, 16, messageSentCallback, msg);
}
catch
{
// ...
}
}
private void messageSentCallback(IAsyncResult result)
{
stream.EndWrite(result);
if (result.IsCompleted)
onDataSent(result.AsyncState as OutgoingMessage);
}
Другие части программы могут вызывать (если они имеют доступ к Отправителю) метод SendMessage()
. Поскольку программа работает в многопоточной среде, несколько потоков имеют доступ к объекту Sender.
У меня 2 вопроса:
Q1) Сможет ли выполнение двух одновременных вызовов метода SendMessage
испортить связь TCP (путем заполнения исходящего буфера TCP смешанными данными)?
Q2) Решит ли проблема с включением вызова stream.BeginWrite()
в lock { }
?
Насколько я понимаю, вызов BeginWrite просто сохраняет данные в исходящем буфере TCP. Это правильно?