Независимо от того, что я пытаюсь: операция ввода -вывода была прервана из -за выхода потока или запроса приложенияC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Независимо от того, что я пытаюсь: операция ввода -вывода была прервана из -за выхода потока или запроса приложения

Сообщение Anonymous »

Я пытаюсь создать простой инструмент Async net TCP WCF, который откроет соединение, отправляет команду, получает ответ (список со строковыми предложениями 0-10), Close Connection. < /p>

Проблема в том, что я всегда нахожусь на (самостоятельно) сторону обслуживания - независимо от того, что я пытаюсь - »Операция ввода/вывода была прервана из -за выхода потока или запроса приложения» , на клиентской стороне Конечно соответствующие ошибки, такие как «существующее соединение было закрыто удаленным хостом» и тайм -аутами и т. Д. IT. < /p>

Клиентская сторона (работа на .net 4.0, вызывается один раз за секунду): < /p>

void callservice(string mykey) {
ServiceReference1.Client c = new ServiceReference1.Client();
c.GetDataCompleted += c_GetDataCompleted;
try {
c.GetDataAsync(mykey);
}
catch (FaultException aa)
{
c.Abort();
}
}

private void c_GetDataCompleted(object sender, ServiceReference1.GetDataCompletedEventArgs e)
{
ServiceReference1.Client c = (ServiceReference1.Client)sender;
c.GetDataCompleted -= c_GetDataCompleted;
try
{
if (e.Result != null && e.Result.Length > 0)
{
... }
c.Close();
}
catch (Exception) {
c.Abort();
}
}
< /code>

Серверная сторона (работа на .net4.5): < /p>

[ServiceBehavior(ConcurrencyMode=ConcurrencyMode.Multiple,
InstanceContextMode=InstanceContextMode.PerCall,IncludeExceptionDetailInFaults=true)]
public class Service1 : IMyService
{
public async Task GetData(string whatkey)
{
List mydatalist = new List();
mydatalist= await Task.Run(() =>
{
...
});
return mydatalist;
}
< /code>

Что там происходит? Может быть, это то, что это не связано с WCF вообще? Что может быть? System.net.sockets.socketException, System, версия = 4.0.0.0, культура = нейтральная, publickeyToken = b77a5c561934e089
Операция ввода /вывода была прервана из -за любого Выход потока или запрос приложения

at system.servicemodel.channels.socketConnection.handlereCeiveAsyNccompleted ()
at system.servicemodel.channels.socketConnection.onReceiveAsync (Sender Sender, ocketSynceNtargs) /> at System.net.sockets.socketAsynceventargs.finishoperationAsyncfailure (SocketError SocketError, Int32 Bytestransred, SocketFlags)
at system.net.sockets.socketasynceventargs.completionportcall (uint32 urresscode, uint32 numbretes at intrappeppenceppeppretppected* System.Threading._IOCOMPLETIORCALLBACK. Выход или запрос приложения
3e3
< /p>
< /blockquote>

еще один интересный факт:
svclogs показывает мне, что эксплуатация ввода -вывода происходит после промежутка времени, которую я могу определить в < /p>


< /code>

Настройки.
В этом примере это произойдет в первый раз после 00:02:39.
Моя интерпретация: она закрывает открытые соединения из -за настройки там, и это вызывает исключение с момента операции по получению. все еще был открыт. < /p>

Мой вопрос пока так, почему client.close () не закрывает его полностью, и почему он еще не закончен, когда он вызывает c_getdataCopletled-event? Почему операция «тусуется» в течение 02:39 минут и не заканчивается В конечном итоге с сотнями открытых операций, если я использую NetStat I.Ex.>

Подробнее здесь: https://stackoverflow.com/questions/150 ... ther-a-thr
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»