/(["\']).*?(?<!\\)(\\\\)*\1/is
должен работать с любой цитируемой строкой
ладно, из комментариев, которые мне придумали. Я пытался увидеть, как идти, и получить 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.
}