Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование в среде .NET (ASP.NET,ADO.NET) на C#/VB.NET

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162

Открыть новую тему     Написать ответ в эту тему

4seasons



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mextrom
Цитата:
зачем, если не секрет, сейчас использовать WinForms?

Сейчас WinForms пользуются только лузеры, так что ли?

Всего записей: 5509 | Зарегистр. 31-05-2009 | Отправлено: 11:09 02-06-2021 | Исправлено: 4seasons, 15:56 02-06-2021
Mextrom



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
4seasons

Цитата:
Сейчас WinForms пользуются только лузеры, так что ли?  

Нет, просто для того, чтобы хотя бы получить шанс оветить на вопрос "стоит ли переходить на 5.0 в WinForms проекте?", надо хотя бы примерно представлять, какие проеблемы/задачи стоят, что не устравивает и т.д. Я не особо вникал в новинки дотнета, но беглый поиск подсказывает, что улучшился перформанс. Но поскольку производительность в UI редко имеет значение, то в таком случае я бы сказал - нет смысла переходить но новую версию. Вроде бы была информация, что с новым фреймворком редактор стал лучше, но, как по мне, редактор больше зависит от самой IDE, чем от фреймворка. Если хочется каких-то "плюшек"/изменений в IDE, то проще всего новую версию IDE поставить и посмотреть, тогда проект обновлять не придётся. А если все устраивает, то зачем вообще что-то менять?

Всего записей: 854 | Зарегистр. 30-03-2005 | Отправлено: 15:22 04-06-2021 | Исправлено: Mextrom, 15:30 04-06-2021
4seasons



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mextrom
Собственно DOTNET 5 меня заинтересовал еще и с точки зрения его лицензирования.
Насколько я понимаю, .NET Framework законно можно использовать только в составе Windows, а под Wine в Linux его использование вроде как и не законно.
Вот мне и стало интересно, .NET Desktop Runtime 5 можно использовать на законных основаниях под Wine в Linux или нет?

Всего записей: 5509 | Зарегистр. 31-05-2009 | Отправлено: 15:58 04-06-2021 | Исправлено: 4seasons, 16:29 04-06-2021
Mextrom



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
4seasons

Цитата:
Насколько я понимаю, .NET Framework законно можно использовать только в составе Windows, а под Wine в Linux его использование вроде как и не законно.  

Я ни грамма не юрист, а откуда информация, что .Net можно использовать только под виндой? Вот тут написано, что все абсолютно бесплатно даже для коммерческого применения. Если брать тот же WinForms, то приложения запускались под mono, правда пробовал я это чуть ли не 10 лет назад, не знаю, как сейчас дела с .Net в линукс. Собственно и с запуском под Wine тоже не должно быть никаких ограничений.

Всего записей: 854 | Зарегистр. 30-03-2005 | Отправлено: 16:42 04-06-2021
4seasons



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mextrom
Цитата:
откуда информация, что .Net можно использовать только под виндой?

Отсюда, из раздела "Microsoft .NET"
Цитата:
Однако имейте в виду, что ... среда выполнения Microsoft .NET не является бесплатным программным обеспечением, поэтому обязательно прочтите лицензионное соглашение перед тем, как принять его.
.NET Core и .NET 5.0 отличаются от .NET Framework 4.x и более ранних версий. Они больше не реализованы как компонент ОС, и поэтому могут прекрасно работать вместе с Wine Mono или с более ранними версиями .NET Framework. Приложения, использующие .NET 5, обычно включают среду выполнения, что означает, что пользователям не нужно ее устанавливать, но установщики также должны работать нормально.

Цитата:
приложения запускались под mono, правда пробовал я это чуть ли не 10 лет назад

Они и сейчас под Mono запускаются, только, к сожалению, WinForms в Mono больше не развивается, а то что есть, в значительной части не доделано, очень многие функции там так и не заработали, потому остался только один вариант - запускать WinForms под Wine.

Всего записей: 5509 | Зарегистр. 31-05-2009 | Отправлено: 18:04 04-06-2021 | Исправлено: 4seasons, 19:46 04-06-2021
Mextrom



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
4seasons  
Я так понял, так было во времена .Net 1.0. Тогда фреймворк был компонентом ОС.
Потом, начиная с 3.5, лицензия поменялась, и фреймворк стал доступен для использования уже без привязки к винде.  
А у Net.Core уже лицензия MIT.

Цитата:
Project License Type: MIT

Соответственно, не должно быть никакой привязки к ОС даже для версий ниже 5.

Всего записей: 854 | Зарегистр. 30-03-2005 | Отправлено: 20:03 04-06-2021 | Исправлено: Mextrom, 20:05 04-06-2021
4seasons



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mextrom
Как видно, веских причин для перехода на DOTNET довольно много и я потихоньку уже начал туда мигрировать.
 
PS
И заодно, раз уж ты в онлайне, не мог бы ты посмотреть на мою проблему с Visual Studio 2019.
Там нужно просто создать проект WinForm на VB .NET и посмотреть на переключение элементов.
Собственно требуется либо подтверждение, либо опровержение проблемы.

Всего записей: 5509 | Зарегистр. 31-05-2009 | Отправлено: 11:14 06-06-2021 | Исправлено: 4seasons, 11:15 06-06-2021
Mextrom



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
4seasons

Цитата:
Там нужно просто создать проект WinForm на VB .NET и посмотреть на переключение элементов.  

Да, такая же фигня в версии 16.10.1. Но вообще я этим переключателем и не пользовался никогда. Решение не нашёл.  
Какая-то глючная версия студии, редактор sql скриптов тоже косячит.

Всего записей: 854 | Зарегистр. 30-03-2005 | Отправлено: 17:52 14-06-2021
4seasons



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mextrom
Цитата:
глючная версия студии

Утешает, что в этом я оказался не одинок.

Всего записей: 5509 | Зарегистр. 31-05-2009 | Отправлено: 18:07 14-06-2021 | Исправлено: 4seasons, 18:08 14-06-2021
Xttx



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Может кто подскажет, из за чего так получается, что очередь changed_rows разсинхронизируется в потоках примерно в одном случае из 10?
При нормальной работе, в эту очередь складываются изменения строк, которые добавляются в основном треде. Но _иногда_, это просто перестаёт работать - ошибок нет, цикл в бэкграунде крутится, но в бэкграунде changed_rows.Count = 0, в то время как в основном потоке там секунд за 30 накапливается несколько сотен.
Когда такое происходит, метод changed_rows.GetHashCode() возвращает разные значения в Update() и в ANOTHER_THREAD().
Кто ни будь может подсказать?
 

Код:
 
private static volatile ConcurrentQueue<changed_rows_info> changed_rows = new ConcurrentQueue<changed_rows_info>();
 
void Update() {
  changed_rows.Enqueue( new changed_rows_info(rows[current_row]) ); //Тут добавляется 5-10 записей в секунду
}
 
void ANOTHER_THREAD() {
  while (true) {
    while ( changed_rows.TryDequeue(out rows_Info) ) { //А тут, очередь оказывается пустой :/
      //code
    }
    Threading.Thread.Sleep(300);
  }
}
 

Всего записей: 539 | Зарегистр. 04-07-2002 | Отправлено: 11:40 15-06-2021 | Исправлено: Xttx, 14:09 15-06-2021
Mextrom



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Xttx
О остальной код потоков как выглядит? у меня не воспроизводится проблема. Я делал так:

Код:
private static volatile ConcurrentQueue<string> changed_rows = new ConcurrentQueue<string>();
 
        static void Update()
        {
            while (true)
            {
                changed_rows.Enqueue(DateTime.Now.ToString()); //Тут добавляется 5-10 записей в секунду
                Console.WriteLine(changed_rows.Count);
            }
        }
 
        static void ANOTHER_THREAD()
        {
            while (true)
            {
                while (changed_rows.TryDequeue(out string str))
                {
                    Console.WriteLine(str);
                }
                System.Threading.Thread.Sleep(300);
            }
        }
 
        static void Main(string[] args)
        {
            Thread th1 = new Thread(Update);
            th1.Start();
 
            Thread th2 = new Thread(ANOTHER_THREAD);
            th2.Start();
        }

Всего записей: 854 | Зарегистр. 30-03-2005 | Отправлено: 10:27 16-06-2021 | Исправлено: Mextrom, 10:27 16-06-2021
Xttx



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mextrom
Остальной код довольно длинный и запутанный. Боюсь разбираться там Вам не понравится.
Но, вот он весь: https://github.com/xttx/Script-o-bot-common/blob/master/Assets/Scripts/UI/Text_Editor.cs
 
В очередь добавляются записи в нескольких местах в функции Update() (строки 748, 790, 832 и т.д.)
Цикл в бэкграунде - это функция Intellisense_var_check_bg() (начинается со строки 2425)
 
Пишется это всё в Unity. Функция Update() вызывается каждый кадр (т.е. примерно 60 раз в секунду). Если в редакторе произошли изменения (пользователь написал букву, стёр букву, скопипастил из буфера) - в очередь добавляется информация об изменившейся строке. И фоновый тред уже разбирается что с ней делать.
 
Проблемы начались после обновления Unity до v2020.3. До этого проект писался в v2018.4 и проблем замечено не было.
 
Если просто запустить изолированный код из вашего поста - то да, он работает стабильно. Но в скрипте очередь почему-то как-то дублируется в тредах, как я выше описал. Не всегда. Просто в какой-то момент оно перестаёт работать, а в дебаггере видно, что в фоновом треде очередь пустая. Хотя, переменную очереди я нигде больше не трогаю, да и как вообще можно на неё повлиять что бы получить такое!??
 
Заранее спасибо за помощь!

Всего записей: 539 | Зарегистр. 04-07-2002 | Отправлено: 10:57 16-06-2021 | Исправлено: Xttx, 10:59 16-06-2021
Mextrom



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Xttx
В коде переменная changed_rows не статическая,

Код:
ConcurrentQueue<changed_rows_info> changed_rows = new ConcurrentQueue<changed_rows_info>();

причём пересоздаётся при вызове Intellisense_Init_Vars (строка 2206),

Код:
   void Intellisense_Init_Vars() {
        changed_rows = new ConcurrentQueue<changed_rows_info>();
        intellisense_vars = new classes_dict();
        intellisense_usings = new List<classes_dict>();
        vars_rows_assoc.Clear();
        vars_rows_assoc_rev.Clear();
        using_rows_assoc.Clear();
        using_rows_assoc_rev.Clear();
        if (Intellisense_Settings.get_assemblies_from_reflection) Intellisense_AddUsing("FromSettings");
    }

который вызывается в сеттере text (строка 3317) и в сетттере enable_intellisense (строка 3341). Я бы копал в этом напрвлении, похоже, очередь просто перетирают, но у меня нет возможности проверить.

Всего записей: 854 | Зарегистр. 30-03-2005 | Отправлено: 12:59 16-06-2021
Xttx



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Заменил:

Код:
changed_rows = new ConcurrentQueue<changed_rows_info>();  

на:

Код:
changed_rows_info tmp; while (changed_rows.TryDequeue(out tmp)) { };

 
Субъективно, вроде бы, стало немного по стабильнее... но всё равно, проблема осталась.
 
А переменная не статическая потому, что это вариант до моих экспериментов. Я потом разные варианты объявления пробовал - без толку. К сожалению, ничего не меняется...
 
Всё равно, спасибо!

Всего записей: 539 | Зарегистр. 04-07-2002 | Отправлено: 17:51 16-06-2021 | Исправлено: Xttx, 18:50 16-06-2021
Mextrom



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Xttx
Главный вопрос, где и в какой момент устанвливаются text и enable_intellisense.

Всего записей: 854 | Зарегистр. 30-03-2005 | Отправлено: 09:49 17-06-2021
Xttx



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mextrom
.enable_intellisense - один раз, при запуске
а .text иногда меняется, когда по сценарию нужно что-то в текстовый редактор впихнуть... ещё, во время юнит-тестирования, через это свойство, вставляются сэмплы скриптов, для проверки парсинга.
 
Но я же там заменил пересоздание экземпляра на while (changed_rows.TryDequeue(out tmp)){}. Разве это не должно было всё пофиксить, если бы проблема была в этом?

Всего записей: 539 | Зарегистр. 04-07-2002 | Отправлено: 21:58 17-06-2021
Xttx



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mextrom
Починил. Проблема была в том, что создавалось несколько экземпляров этого класса (что было запланировано), и этих фоновых тредов, крутилось тоже несколько (чего не должно было быть никогда). В итоге, я в дебаггере видел очередь не того треда, но не обратил на это внимания. И то, что потом я её сделал static - мало помогло, т.к. пока она добавлялось в одном треде, другой её перетирал... Отловил в итоге поставив бряку в свойстве .text, и увидев там текст другого инстанса.
 
Большое спасибо за помощь!

Всего записей: 539 | Зарегистр. 04-07-2002 | Отправлено: 11:17 18-06-2021
ST2000

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пожалуйста, прошу совета:
Есть C# EXE файл (не mixed), на одной машине стартует, на второй, чистой Win10 x64 не стартует, крашится безмолвно.
Крашится еще до entrypoint.
Сообщений никаких, в eventlog стандартом только:
 
Ощущение что каких-то зависимостей не хватает.
Установлены уже все версии рантаймов VC и .NET.
не помогло...
Где можно порыться - найти более подробно ошибку?
Спасибо
[hide]

Код:
 
Application: StartApp.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.IO.FileNotFoundException
   at Form1.App..ctor()
   at Form1.App.Main()
 
Faulting application name: StartApp.exe, version: 1.0.0.0, time stamp: 0x622b580e
Faulting module name: KERNELBASE.dll, version: 10.0.19041.906, time stamp: 0x2f2f77bf
Exception code: 0xe0434352
Fault offset: 0x0000000000034b59
Faulting process id: 0x1b7c
Faulting application start time: 0x01d83ead90caa941
Faulting application path: C:\win\StartApp.exe
Faulting module path: C:\Windows\System32\KERNELBASE.dll
Report Id: bd1c99c4-6b98-4543-b308-753665c553ef
Faulting package full name:  
Faulting package-relative application ID:  
 

[/hide]
В краш файлах:

Код:
 
Version=1
EventType=APPCRASH
EventTime=132925104161927238
ReportType=2
Consent=1
UploadTime=132925104166459003
ReportStatus=268435456
ReportIdentifier=5a340238-590d-4438-b422-d8bcd424eaf4
IntegratorReportIdentifier=b888c84b-89ee-4be0-8fee-e66db062a2b0
Wow64Host=34404
NsAppName=StartApp.exe
OriginalFilename=StartApp.exe
AppSessionGuid=000014dc-0001-0005-622d-0d8fad3ed801
BootId=4294967295
TargetAsId=1493
IsFatal=1
EtwNonCollectReason=1
Response.BucketId=0e683346a9b1411fc2a5e1ea8f79acef
Response.BucketTable=4
Response.LegacyBucketId=1343728461385673967
Response.type=4
Sig[0].Name=Application Name
Sig[0].Value=StartApp.exe
Sig[1].Name=Application Version
Sig[1].Value=1.0.0.0
Sig[2].Name=Application Timestamp
Sig[2].Value=622b57ec
Sig[3].Name=Fault Module Name
Sig[3].Value=KERNELBASE.dll
Sig[4].Name=Fault Module Version
Sig[4].Value=10.0.19041.906
Sig[5].Name=Fault Module Timestamp
Sig[5].Value=2f2f77bf
Sig[6].Name=Exception Code
Sig[6].Value=e0434352
Sig[7].Name=Exception Offset
Sig[7].Value=0000000000034b59
DynamicSig[1].Name=OS Version
DynamicSig[1].Value=10.0.19043.2.0.0.256.162
DynamicSig[2].Name=Locale ID
DynamicSig[2].Value=1033
DynamicSig[22].Name=Additional Information 1
DynamicSig[22].Value=6b27
DynamicSig[23].Name=Additional Information 2
DynamicSig[23].Value=6b273dadf2fa6a85cb547f08bab4dfb5
DynamicSig[24].Name=Additional Information 3
DynamicSig[24].Value=a6b0
DynamicSig[25].Name=Additional Information 4
DynamicSig[25].Value=a6b02705cc416e24f2b8bee2f5b3f463
UI[2]=C:\win\StartApp.exe
LoadedModule[0]=C:\win\StartApp.exe
LoadedModule[1]=C:\Windows\SYSTEM32\ntdll.dll
LoadedModule[2]=C:\Windows\SYSTEM32\MSCOREE.DLL
LoadedModule[3]=C:\Windows\System32\KERNEL32.dll
LoadedModule[4]=C:\Windows\System32\KERNELBASE.dll
LoadedModule[5]=C:\Windows\System32\ADVAPI32.dll
LoadedModule[6]=C:\Windows\System32\msvcrt.dll
LoadedModule[7]=C:\Windows\System32\sechost.dll
LoadedModule[8]=C:\Windows\System32\RPCRT4.dll
LoadedModule[9]=C:\Windows\Microsoft.NET\Framework64\v4.0.30319\mscoreei.dll
LoadedModule[10]=C:\Windows\System32\SHLWAPI.dll
LoadedModule[11]=C:\Windows\SYSTEM32\kernel.appcore.dll
LoadedModule[12]=C:\Windows\SYSTEM32\VERSION.dll
LoadedModule[13]=C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll
LoadedModule[14]=C:\Windows\System32\USER32.dll
LoadedModule[15]=C:\Windows\System32\win32u.dll
LoadedModule[16]=C:\Windows\System32\GDI32.dll
LoadedModule[17]=C:\Windows\System32\gdi32full.dll
LoadedModule[18]=C:\Windows\System32\msvcp_win.dll
LoadedModule[19]=C:\Windows\System32\ucrtbase.dll
LoadedModule[20]=C:\Windows\SYSTEM32\VCRUNTIME140_CLR0400.dll
LoadedModule[21]=C:\Windows\SYSTEM32\ucrtbase_clr0400.dll
LoadedModule[22]=C:\Windows\System32\IMM32.DLL
LoadedModule[23]=C:\Windows\System32\psapi.dll
LoadedModule[24]=C:\Windows\assembly\NativeImages_v4.0.30319_64\mscorlib\0715c4fdaf0442fe6a5f74fe860f1fef\mscorlib.ni.dll
LoadedModule[25]=C:\Windows\System32\ole32.dll
LoadedModule[26]=C:\Windows\System32\combase.dll
LoadedModule[27]=C:\Windows\System32\bcryptPrimitives.dll
LoadedModule[28]=C:\Windows\system32\uxtheme.dll
LoadedModule[29]=C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clrjit.dll
LoadedModule[30]=C:\Windows\Microsoft.NET\Framework64\v4.0.30319\diasymreader.dll
 

Всего записей: 59 | Зарегистр. 04-09-2012 | Отправлено: 15:21 23-03-2022 | Исправлено: ST2000, 15:21 23-03-2022
MihailM



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ST2000, здесь трудно понять что и как .. посмотрите-сравните настройки проекта , на работающей машине и вашей , вкл. какой NET. используете в проекте , может в этом ошибка..
 Добавка :
Так на  на всякий случай активирован ли в Панель Управления-Удаление программ-Включение отключение компонентов - Net 3.5.1 ?
screenshot win 7x64 https://prnt.sc/1Ce9GPvFKq5w .. Вдруг поможет..

Всего записей: 2498 | Зарегистр. 19-10-2003 | Отправлено: 11:16 24-03-2022 | Исправлено: MihailM, 23:57 24-03-2022
andre_d

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Студия помогает создавать  комментарии (описания) к методам и объектам  
 ( /// ).  Кроме intellisensе подсказок для при дальнейшем написании кода, она умеет  создавать  XML
файл с этими комментариями.  А существуют средства для дальнейшего использования этого файла  
для помощи в создании документации?  Попадались ссылки на мертвые проекты NDOC и Sandlecastle.  
А существует ли  что-нибудь живое?

Всего записей: 130 | Зарегистр. 17-09-2004 | Отправлено: 17:52 17-04-2022
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование в среде .NET (ASP.NET,ADO.NET) на C#/VB.NET


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru