<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=435068&amp;view=findpost&amp;p=3895511</guid>
        <pubDate>Wed, 04 Oct 2023 04:12:40 +0000</pubDate>
        <title>Программа Windows Forms не отвечает (зависает)</title>
        <link>https://forum.sources.ru/index.php?showtopic=435068&amp;view=findpost&amp;p=3895511</link>
        <description><![CDATA[Pit-Bul: Иногда помогает в момент зависания программы в дебаге нажать паузу и программа остановиться на том месте где на данный момент находиться.]]></description>
        <author>Pit-Bul</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=435068&amp;view=findpost&amp;p=3891071</guid>
        <pubDate>Fri, 26 May 2023 07:18:45 +0000</pubDate>
        <title>Программа Windows Forms не отвечает (зависает)</title>
        <link>https://forum.sources.ru/index.php?showtopic=435068&amp;view=findpost&amp;p=3891071</link>
        <description><![CDATA[Wound: Подключи Serilog какой нить, и выводи в лог что происходит.<br>Если оно сразу не зависает, а через час зависает - просто вот так сходу сложно сказать в чем проблема. Но зависать прям &quot;Программа не отвечает&quot;, может быть из за необработанного исключения, либо из за того что ты каким то образом заблокировал главный поток программы(допустим в обработчике какого то контрола - пошел лупить бесконечный цикл, не отдавая процессорное время ГУИ). <br>Все это отслеживается с помощью логов. <br><br>1) Во первых, вынеси из обработчиков формы всю вот эту кашу в отдельный класс, в отдельные методы. Создай хотя бы просто класс Graphics, и в нем методы в которых завязана логика, не относящаяся к гуям вообще, и вызывай эти методы в обработчиках. Так по крайней мере ты разгрузишь обработчики в ГУИ. А то сейчас у тебя там мало того что код формы и контролов, так он еще и смешан с логикой, где всякие значения в циклах вычисляются, и к форме и контролам ну вообще не имеют никакого отношения. Так тебе проще будет читать хотя бы программу, а портянку кода ты изолируешь в отдельном классе(похорошему конечно там все надо переписывать, но хотя бы так.)<br>2) Во вторых каждый метод, где у тебя есть тобой написанный код - оберни в try/catch, и во всех catch выводи в лог запись об ошибке, ну или хотя бы брекпоинт поставь.<br>У тебя куча кода подозрительного со всякими unsafe(зачем то, ты там что с указателями работаешь?), да и просто куча циклов и все намешано в кучу, и очень вероятно летит исключение, которое ты не обрабатываешь, ибо просто не видишь где оно может потенциально возникнуть.<br>3) В третьих - протрейси(в лог выводи) вообще все что можно, ну не просто каждую строчку конечно, а хотя бы что ты делаешь, типа какая функция вызывается, что в ней творится, то будет вызвано, выводи значения в лог, и результаты вычислений от которых зависят дальнейшие вычисления, так же выводи в лог. Вдруг ты проверку где то не вставил, а оно там нулевое.<br><br>Вот после этого - воспроизводи проблему. Как только все зависло, открывай лог - и смотри, где оно встало, какая ошибка случилась. И уже от этого пляши.]]></description>
        <author>Wound</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=435068&amp;view=findpost&amp;p=3891013</guid>
        <pubDate>Tue, 23 May 2023 16:01:03 +0000</pubDate>
        <title>Программа Windows Forms не отвечает (зависает)</title>
        <link>https://forum.sources.ru/index.php?showtopic=435068&amp;view=findpost&amp;p=3891013</link>
        <description><![CDATA[tumanovalex: Через 5 минут после запуска программы из VS2022 в режиме Debug замирает лента памяти на вкладке Средства диагностики (последнее значение памяти 42 мб), при этом индикатор загрузки ЦП работает нормально. Диспетчер задача показывает, что программа использует 8% ЦП и 32 мб памяти. Программа примерно минут 30-40 рисует графики (хотя 2 нижних графика плохо обновляются) и сбрасывает данные в файл нормально. Примерно через час программа зависает и в диспетчере задач появляется надпись &quot;Не отвечает&quot;. При этом в диспетчере потребление памяти 55 мб, а загрузка процессора - 18%. Я с помощью средств диагностики ранее нашел причину быстрого роста потребления памяти (забыл удалить точки графика при обновлении графика Points.Clear()), а вот как обнаружить причину зависания - не знаю. В программе использую BackgroundWorker для вывода на одну из вкладок графиков, а на другую вкладку - значений. Помогите, пожалуйста, советом, как найти причину зависания. Программу прикрепил.<br>
<span class="b-attach" data-size="14983" data-hits="117" data-attach-id="64925" data-attach-post-id="3891013">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3891013&amp;attach_id=64925' title='Скачать файл' target='_blank'>csFormsTest.zip</a> (, : 117)
		</span>]]></description>
        <author>tumanovalex</author>
        <category>.NET: Общие вопросы</category>
      </item>
	
      </channel>
      </rss>
	