apr-библиотека из проекта apache является хорошей ссылкой для этой проблемы. Он использует опрос с тайм-аутом, чтобы проверить, нарушено ли соединение другой стороны.
От C# 6 вперед: это больше не проблема
<час>Becore C# 6, необходимо назвать конструктора по умолчанию для этого для работы:
public MyStruct(int size) : this()
{
Size = size;
}
А большая проблема здесь состоит в том, что у Вас есть изменяемая структура. Это никогда хорошая идея. Я сделал бы его:
public int Size { get; private set; }
Не технически неизменный, но достаточно близко.
С последними версиями C#, можно изменить к лучшему это:
public int Size { get; }
Это может теперь только быть присвоенным в конструкторе.
Можно зафиксировать это первым вызовом конструктора по умолчанию:
struct MyStruct
{
public MyStruct(int size) : this()
{
this.Size = size; // <-- now works
}
public int Size { get; set; }
}
Другое неясное обходное решение к этой проблеме является тем, определенным во временном файле Tuple
класс в Управляемая Платформа Расширяемости (через Krzysztof KoЕєmic):
public struct TempTuple<TFirst, TSecond>
{
public TempTuple(TFirst first, TSecond second)
{
this = new TempTuple<TFirst, TSecond>(); // Kung fu!
this.First = first;
this.Second = second;
}
public TFirst First { get; private set; }
public TSecond Second { get; private set; }
(Полный исходный код от Codeplex: Tuple.cs)
я также отмечаю, что документация для CS0188 была обновлена для добавления:
, Если Вы видите эту ошибку при попытке инициализировать свойство в конструкторе структуры, решение состоит в том, чтобы изменить параметр конструктора для определения отступающего поля вместо самого свойства. Автореализованных свойств нужно избежать в структурах, потому что они не имеют никакого поля поддержки и поэтому не могут быть инициализированы всегда от конструктора.
, Таким образом, я беру это, чтобы означать, что официальное руководство состоит в том, чтобы использовать свойства старого стиля в Ваших структурах, когда Вы работаете в к этой проблеме, которая, вероятно, менее неясна (и больше readible), чем любая из других двух альтернатив, исследуемых до сих пор.