использовать excel COM-объект в разных потоках

/(["\']).*?(?<!\\)(\\\\)*\1/is

должен работать с любой цитируемой строкой

0
задан MickyD 13 July 2018 в 16:23
поделиться

1 ответ

ладно, из комментариев, которые мне придумали. Я пытался увидеть, как идти, и получить COM-объект из моего рабочего потока, прежде чем поток закончится. было бы слишком сложно изменить код, так что поток пользовательского интерфейса создает COM-объекты, прежде чем я начну рабочий рабочий поток, потому что я не могу создать COM-объекты до середины рабочего потока. И тут меня осенило. Когда я добираюсь до части рабочего потока, который создает COM-объекты, просто отправляйте его в поток пользовательского интерфейса. теперь это может быть не лучшее решение, но оно работает. здесь приведен фрагмент кода о том, как это сделать в рабочем потоке.

private void workerthread(string e)
{
    //code removed for simplicity..

    //Create COM object for excel app & excel workbook in Main thread to prevent object reference loss
    App.Current.Dispatcher.Invoke((Action)delegate
    {
        MyGlobals.xlApp = Activator.CreateInstance(Type.GetTypeFromProgID(MyGlobals.ExcelprogID));
        MyGlobals.xlWorkBook = MyGlobals.xlApp.Workbooks.Add(MyGlobals.misValue);
    });
    MyGlobals.xlApp.Visible = true; 
    //more code here to do stuff with excel.
}
0
ответ дан JED 17 August 2018 в 12:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: