Недостатки С#

С самого начала я занимался программирование на Паскаль, Делфи. Последним инструментом можно много чего реализовать. Но считается что более профессионально писать программы на С, С++. По-этому я тоже начал смотреть в эту сторону. Пару программ написал на визуальном С++. Потом пришел Microsoft и начал активно развивать свой С#, предлагая большую библиотеку, которая должна быть установлена на каждом виндовсе. Да это .NET Framework

В то время как Delphi 10.1 Berlin (например) является платным, и его использование без оплаты немного нелегально, я решил попробовать С#, который поставляется бесплатно и яякобы содержит так много полезного и встроенного. Я загрузил и установил среду разработки и начал делать проект. То, что выявилось потом невозможно себе представить.

Мне понадобилась многопоточная программа. Это нормально при текущем развитии вычислительной техники. Я создал новый поток и поместил в него рабочий код. Пример:

Thread myThread = new Thread(func); 
myThread.Start(); 
for (int i = 0; i < 10; i++ )
{
   Console.WriteLine(i);
   Thread.Sleep(0);
}

Как обычно бывает, я захотел, чтобы из потока выводились некие данные для отладки. Я добавил обычное поле Memo добавляю в него строку… Но не тут-то было. Компилятор не пропускает – пишет, что один поток не может получить доступ к другому потоку. Первый поток – создал я отдельно, второй поток – это поток визуальных компонентов – кнопок, форм ввода текста, поле ввода Memo.

Поискав форумы, в том числе на английском языке, я заметил что много солидных программистов столкнулись с такими проблемами жесткого контроля в С#. Эту проблему как я понял решить не возможно, хоть бери и создавай локальный файл, который будет то записываться, то считываться.

Допустим нужна такая программа – много потоков сканируют разные сайты, что-то в них ищут и выводят результат в общее поле программы. Вполне логичная программа, но оказывается реализовать её на С# просто нельзя. Потому что один поток не имеет права лезть ко второму потоку…

После этой проблемы у меня опустились руки и пропало желание “бороться” и ставить “костыли” при программировании на С#. Каждая проблема, какая у меня возникала, была очень часто описана на форумах, так что я не одинок в своих проблемных участках кода. В связи с этим не рекомендую вам даже начинать учить С#. Я забросил С# и перешел обратно на все ещё свежий функциональный Delphi 10.1 Berlin .

Программа на Delphi 10