Я вижу проблему с проводным соединением в приложении Xamarin.Forms.Это кроссплатформенное приложение Xamarin, использующее .NETStandard 2, поэтому код не зависит от платформы, а является частью библиотеки .NETStandard (или того, что называлось до PCL).
Я устанавливаю TCPIP-соединение с сервером и получаю некоторые данные отсервер успешно на всех трех платформах Android, iOS и UWP.
Это все хорошо и работает.
Проблема, которую я вижу, немного глупа.Я Xamarin редактор контроля, чтобы показать вывод с сервера.Элемент управления «Редактор» должен расширяться для отображения всего нового текста, добавленного в него.И это на Android или iOS, но не на UWP.Более того, в UWP текст не отображается из полученного сообщения, но сообщение получено успешно, и я могу увидеть его в режиме отладки, поместив указатель мыши на переменную msg ниже или на свойство editorResponse.Text
private void ReadResponse()
{
if (serverStream.CanRead)
{
byte[] readBuffer = new byte[1024];
StringBuilder receivedMessage = new StringBuilder();
int readSoFar = 0;
do
{
//serverSteam is an instance of System.Net.Sockets.NetworkStream
readSoFar = serverStream.Read(readBuffer, 0, readBuffer.Length);
receivedMessage.AppendFormat("{0}", Encoding.ASCII.GetString(readBuffer, 0, readSoFar));
}
while (serverStream.DataAvailable);
string msg = receivedMessage.ToString().Trim();
//PROBLEM IS HERE AND ON UWP ONLY! BOTH IOS AND ANDROID ARE FINE
//hower over msg or editorResponse.Text
//and I see both have correct received
//information from server but editorResponse Editor
//control wont show it
//Hardcoding dummy string will show correct however
editorResponse.Text = msg; // this is Xamarin Editor view
//If I put message into a Label control, it shows just fine
lblResponse.Text = msg; // this works!
}
else
{
DisplayAlert("Error", "Cannot read from NetworkStream", "Close");
}
}
Вот как мой редактор установлен в XAML
<Editor x:Name="editorResponse"
Text="Server response will show here"
AutoSize="TextChanges"
IsSpellCheckEnabled="False"
HorizontalOptions="Fill"
VerticalOptions="Fill">
</Editor>