Когда я запускаю это, я вижу, что оба они печатают начало отсчета с 1. Это означает, что он не синхронизирован. Я понимаю концепцию многопоточности над чем-то неправильно? Или у кода есть проблема? Или Thread в том же приложении можно синхронизировать. Если я хочу синхронизировать этот путь, каков путь?
Я думаю, что и Thread1, и Thread2 имеют разный экземпляр APIClass, поэтому синхронизация невозможна. Есть ли выход?
спросил(а) 2016-12-23T12:44:00+03:00 6 лет, 5 месяцев назад
добавить комментарий
пожаловаться
В случае, когда у вас есть два отдельных консольных приложения, блокировки с использованием ключевого слова lock не разделяются между ними — lock является локальной для отдельного процесса. Если вы хотите заблокировать процессы, вам нужно использовать named mutex . См. Http://www.c-sharpcorner.com/UploadFile/1d42da/threading-with-mutex/. Для блокировки перекрестного процесса с помощью мьютекса см. Http://mikeperetz.blogspot.co.uk/2013/12/cross-process-locking-using-named-mutex.html Ваш код будет выглядеть примерно так:
Сервис «Secondary Logon» не запущен. Ошибка при установке Postgree SQL для сервера 1С:Предприятие
public class APIClass
private const string MutexName = «FAA9569-7DFE-4D6D-874D-19123FB16CBC-8739827-[SystemSpecicString]»;
private Mutex _globalMutex;
private bool _owned = false;
private int timeToWait = 1000;
object baton = new object();
static int count = 0;
public void SynchronizeMe()
_globalMutex = new Mutex(true, MutexName, out _owned);
while(true)
while (!_owned)
// did not get the mutex, wait for it.
_owned = _globalMutex.WaitOne(timeToWait);
>
int temp = count;
Thread.Sleep(5000);
count = temp + 1;
Console.WriteLine(«Thread Id » + Thread.CurrentThread.ManagedThreadId + » Name:» + Thread.CurrentThread.Name + » incremented count to » + count);
// release the mutex
_globalMutex.ReleaseMutex();
Thread.Sleep(1000);
>
>
>
ответил(а) 2016-12-23T12:58:00+03:00 6 лет, 5 месяцев назад
добавить комментарий
пожаловаться
Два процесса (а точнее два домена приложения) будут загружать две полностью отдельные копии вашей библиотеки. Таким образом, вы не только lock только блокировку копии вызывающей сборки, ваша переменная count будет существовать как две отдельные копии.
У вас может быть процессно-агностическая синхронизация, например, с помощью мьютекса, но вам все равно нужно найти способ поделиться этим счетчиком. Это может быть так же просто, как хранить его в записи файла или реестра, или вы можете использовать базу данных. Но если вы хотите сохранить его в памяти, вам нужно будет запустить третий процесс вместо загрузки копии каждой библиотеки в существующие процессы. Это означает, что вам потребуется взаимодействие между процессами.
ответил(а) 2016-12-23T13:08:00+03:00 6 лет, 5 месяцев назад
добавить комментарий
пожаловаться
Еще в рубрике
Закрыть форму после поднятия события
Как правильно проверять и обрабатывать нулевые значения или объекты
Обеспечение SProc не возвращает слишком много данных
Получить определенный диапазон элементов в списке основанный на некоторых условиях
Оптимизация клиент-серверного взаимодействия
Другие вопросы
WPF — клонирование datagrid не сохраняет визуальную разметку
Может ли кто-нибудь помочь мне в написании запроса LINQ?
Как получить значения элемента xml в строке с помощью Xdocument
- Вопросы
- C#-4.0
- Проблема при синхронизации метода при вызове из другого приложения
Источник: progi.pro
Недопустимое обращение к необновленным параметрам работы программы #757709
Собственно ошибка при /C ЗапуститьОбновлениеИнформационнойБазы Возникла ошибка получения значения доп реквизита. <ОбщийМодуль.СтандартныеПодсистемыСервер.Модуль>: Недопустимое обращение к необновленным параметрам работы программы (например, к некоторым параметрам сеанса): — если это обращение выполняется из формы на начальной странице (рабочем столе), то необходимо убедиться, что в ней имеется вызов процедуры ОбщегоНазначения.ПриСозданииНаСервере; — в остальных случаях необходимо перенести вызов прикладного кода после обновления параметров работы программы. а «Возникла ошибка получения значения доп реквизита.» от сюда, из моего нового общего серверного модуля
#1 by fantomrik
Все работает, но собственно хотелось бы понять на что ругается.. И да, я плохой, ищу по наименованию 🙁
#2 by fantomrik
Что то он пишет о парметрах сеанса.. вешеописанная процедура вызывается отсюда.. А если еще выше, то запускаю из модуля упр приложения, в конце процедуры ПриНачалеРаботыСистемы
#3 by fantomrik
Собственно наверно понял. Скорее всего при обновлении системы инициализация парматров сеанса происходит позже чем обычно, соответственно наверно спотыкается на строчке Если ПолучитьЗначениеДопРеквизита(«Справочник.Пользователи», ПараметрыСеанса.ТекущийПользователь, «Оповещать о нулевых ценах закупки») = Истина Тогда
#4 by fantomrik
Решил проблему, проверяя есть ли параметры запуска. По умолчанию у пользователей тонкий клиент без параметров. В случае параметра с обновлением, мой код пропускается.
Источник: avprog.ru
Синтаксическая ошибка незавершенный список параметров
Синтаксическая ошибка «Незавершенный список параметров»
25.12.2022, 17:53. Показов 512. Ответов 5
Всем привет, подскажите пожалуйста и-за чего может быть такая ошибка. До обновления все нормально работало, а
после обновления БП+БФ некоторые пользователи не могут зайти в базу.
Описание ошибки: Ошибка в ограничении доступа к данным.
объект: ‘Справочник.Организации’, поле: ‘Ссылка’; право: ‘Чтение’
<(1704, 1)>: Синтаксическая ошибка «Незавершенный список параметров»
по причине:
<(1704, 1)>: Синтаксическая ошибка «Незавершенный список параметров»
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
Записей в блоге: 1
1789 / 1213 / 438
Zoom1307, Открой журнал регистрации, отфильтруй по ошибкам и прочитай конкретику по ошибке. Можешь сюда выложить?
Запуск программы невозможен по причине:
<(1704, 1)>: Синтаксическая ошибка «Незавершенный список параметров»
:Если НЕ Запрос.Выполнить().Пустой() Тогда
:Если НЕ ОбщегоНазначенияБП.ОткрыватьДополнительныеОкнаПриЗ апуске() Тогда
:Инф ормацияПриЗапускеПереопределяемый.ОпределитьНастро йки(Настройки);
:Пар аметры.Вставить(«ИнформацияПриЗапуске», Новый ФиксированнаяСтруктура(ГлобальныеНастройки()));
: МодульИнформацияПриЗапуске.ПриДобавленииПараметров РаботыКлиентаПриЗапуске(Параметры);
:ИнтеграцияПодсистемБСП.ПриДобавленииПара метровРаботыКлиентаПриЗапуске(Параметры);
:ПараметрыКлиента = СтандартныеПодсистемыВызовСервера.ПараметрыРаботыК лиентаПриЗапуске(Параметры);
<ОбщийМодуль.СтандартныеПодсистемыКлиент.Модуль(53 7)>:Возврат СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботы КлиентаПриЗапуске();
:И менаПодсистем = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиента ПриЗапуске().ИменаПодсистем;
<ОбщийМодуль.СтандартныеПодсистемыКлиент.Модуль(30 7)>:ОбщегоНазначенияКлиент.ПодсистемаСуществует(«С тандартныеПодсистемы.БазоваяФункциональность»);
:СтандартныеПодс истемыКлиент.ПередНачаломРаботыСистемы();
по причине:
Ошибка выполнения запроса
по причине:
Ошибка в ограничении доступа к данным.
объект: ‘Справочник.Организации’, поле: ‘Ссылка’; право: ‘Чтение’
<(1704, 1)>: Синтаксическая ошибка «Незавершенный список параметров»
по причине:
<(1704, 1)>: Синтаксическая ошибка «Незавершенный список параметров»
1789 / 1213 / 438
Ошибка выполнения запроса
Ошибка в ограничении доступа к данным.
объект: ‘Справочник.Организации’, поле: ‘Ссылка’; право: ‘Чтение’
Посмотри запрос по строке 1704. К каким данным обращается этот запрос?
Где-то у этих данных неверно установлено ограничение по справочнику Организации. Неправильно заполнен шаблон (изменился) или задваивает стандартное ограничение по Организации
Источник: oshibkami.ru