У меня есть файл 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
Ошибки с соединениями udp-tcp и сюжетом ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Тупик в среде локального клиента/сервера с 10K -одновременными соединениями TCP
Anonymous » » в форуме C++ - 0 Ответы
- 15 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Тупик в среде локального клиента/сервера с 10K -одновременными соединениями TCP
Anonymous » » в форуме C++ - 0 Ответы
- 9 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Могу ли я внедрить HTML-файл, сгенерированный сюжетом, в readme.md моего репозитория GitHub?
Anonymous » » в форуме Html - 0 Ответы
- 7 Просмотры
-
Последнее сообщение Anonymous
-