Ошибки с соединениями udp-tcp и сюжетомC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Ошибки с соединениями udp-tcp и сюжетом

Сообщение Anonymous »

У меня есть файл viewModel, когда я скрываю свой основной сюжет и показываю второй, что-то происходит, как будто мой основной сюжет зависает. Я пытался перезапустить приложение, но у меня та же проблема.
Это будет работать, только если я перезапущу приложение своего устройства, откуда я отправляю данные.
Дело в том, что оно все еще передает данные в мой код C#, потому что я могу видеть их из мои журналы в обоих приложениях (приложениях устройства и C#), поэтому мой C# их получает, но не отображает.
Вот мой код:
private async void InitializeRenderingLoop()
{
_cancellationTokenSource = new CancellationTokenSource();
await UpdatePlotAsync(IP, port);
}

private async Task UpdatePlotAsync(string ipAddress, int port)
{
using (var udpClient = new UdpClient())
{
_cancellationTokenSource = new CancellationTokenSource();
var token = _cancellationTokenSource.Token;
udpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
udpClient.Client.Bind(new IPEndPoint(IPAddress.Parse("ipAddress"), port));

while (!_isPaused && !token.IsCancellationRequested)
{
if (_stopAll) break;
try
{
var result = await udpClient.ReceiveAsync();
if (result.Buffer.Length == 0) continue;
var receivedData = result.Buffer;
string message = Encoding.UTF8.GetString(receivedData);
var jsonData = JsonConvert.DeserializeObject
(message);
if (jsonData == null || jsonData.AUData == null)
{
Debug.Print("Failed to parse JSON or 'AUData' is missing.");
return;
}
if (jsonData == null || jsonData.AUData == null)
{
Debug.Print("Failed to parse JSON or 'AUData' is missing.");
return;
}
double[] yData = jsonData.AUData;
if (yData == null || yData.Length == 0)
{
Debug.Print("yData is null or empty.");
return;
}

var pointData = GetWavelength(yData);
var series = (LineSeries)SpectralPlotModel.Series[0];
series.Points.Clear();
foreach (var point in pointData)
{
series.Points.Add(new DataPoint(point.X, point.Y));
//Debug.Print(pointData.ToString());
}
SpectralPlotModel.InvalidatePlot(true);
}
catch (Exception ex)
{
Debug.Print($"Error receiving UDP packet: {ex.Message}");
break;
}
}
}
}

public async void OnLockChanged()
{
LockButtonVisibility = Visibility.Hidden;
GoBackButtonVisibility = Visibility.Visible;
IsSpectralPlotVisible = Visibility.Hidden;
IsSpectralAEPlotVisible = Visibility.Visible;
await AEHTTP.SendAEValues(wV, ScanWindow, IntesityThreshold);
await UpdateAEPlotAsync(ipAddress, port);
}
public void OnGoBackChanged()
{
LockButtonVisibility = Visibility.Visible;
GoBackButtonVisibility = Visibility.Hidden;
IsSpectralPlotVisible = Visibility.Visible;
IsSpectralAEPlotVisible = Visibility.Hidden;
InitializeRenderingLoop();
}

UpdateAEPlotAsync - это всего лишь второй график с другим портом, а OnLockChanged с OnGoBackChanged - мои кнопки.
Также для удаления, если это поможет:
р>
public class PlotViewModel : ObservableObject, IDisposable

И метод Dispose:
public void Dispose()
{
try
{
Debug.Print("Entered the Disposed Method");
_stopAll = true;

_cancellationTokenSource.Cancel();
_cancellationTokenSource.Dispose();

SpectralPlotModel.Annotations.Clear();
SpectralPlotModel.InvalidatePlot(true);

}
catch (Exception ex)
{
Debug.Print($"Error in Dispose: {ex.Message}");
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/790 ... s-and-plot
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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