Имя: Пароль:
1C
1C 7.7
v7: Внешняя компонента .NET
0 пинцетоф
 
25.06.12
10:06
Написана ВК. На компе, где была писана - подключается и работает. На других компах - компонента подключается, но при первой же отправке внешнего события  либо закрывает 1С без предупреждений, либо ошибку выдает 1S Starter. Что характерно, падает, когда внешнее событие вызывается из отдельного созданного потока. Что делать?
1 Serginio1
 
28.06.12
17:06
Либо инициализировать поток либо использовать SynchronizationContext
пример


public void ПодключитьСканер(int НомерПорта)

       {
           sp = new SerialPort("COM" + НомерПорта.ToString());

           sp.BaudRate = 9600;
           sp.Parity = Parity.None;
           sp.StopBits = StopBits.One;
           sp.DataBits = 8;
           sp.Handshake = Handshake.None;

           sp.DataReceived += (sender, e) => {
               SerialPort sp1 = (SerialPort)sender;
               string indata = sp1.ReadExisting();
               Sc.Send(d => EventTo1C.ExternalEvent("ДанныеОтСканера", sp1.PortName, indata), null);
                   
               
           sp.Open();

       
       }


где SC при инициализации
public void InitFrom1C(object Object1C)

       {
               
           EventTo1C = Object1C as IAsyncEvent;
           SynchronizationContext.SetSynchronizationContext(new WindowsFormsSynchronizationContext());
           Sc = SynchronizationContext.Current;
       }
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший