Я работаю над приложением P2P в C#. Это передача файлов с разделом файлов и текстовым чатом.Два потока, работающих в одном списке
На клиенте есть 2 темы, 1 для прослушивания, 1 для отправки. Когда я отправляю файл, он сначала разбивается, скажем, на 10 штук, эти 10 штук добавляются в очередь отправки на клиенте, затем он начинает отправлять фрагмент файла 1. Но теперь я хочу отправить сообщение через тот же канал , Моя идея заключается в том, чтобы вставить это сообщение в список отправки до файла chunk 2. Какая потоковая передача мне нужна для 2 потоков для работы в одном списке? Я учёл объекты, полученные таким образом.
Моя первоначальная идея для функции отправки было что-то вдоль этих линий:
public void Send()
{
while (IsConnected())
{
if (unSentObjects.Count > 1)
{
Task sendTask = new Task(() => SendObj(unSentObjects[0]));
sendTask.Start();
}
}
}
Как флаг, который является 'bool' под названием' ItemInUse'. Этот объект требует ожидания для доступа к нему и использует объекты синхронизации. Фактических данных для вашего приложения нет. Просто, если 'ItemInUse' является ложным, установите для него значение true, а затем сделайте то, что вы хотите с данными, а затем, когда закончите, снова установите его в false. –
Очередь является локальной для потока отправителя, затем поток 2 добавляет новые объекты в очередь отправки. Но я не могу этого сделать, потому что, как вы говорите, это одновременное чтение/запись, но не существует способа добавить новый объект после того, как он отправит кусок 1? – BoinQ