У меня есть файл 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#
Место общения программистов C#
1728383668
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}");
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79065562/bugs-with-udp-tcp-connections-and-plot[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия