зависает приложение WPF
От: dsalodki Беларусь http://dsalodki.wix.com/resume
Дата: 27.12.22 19:52
Оценка:
private string OpenDOCXFile(string path)
        {
            Application word = null;
            Document doc = null;

            try
            {
                
                word = new Application() { Visible = false };
                //word.ScreenUpdating = false;
                object file = path;
                //object nullobject = System.Reflection.Missing.Value;

                //doc = wordObject.Documents.Open(ref file, ref nullobject, ref nullobject, ref nullobject, ref nullobject, ref nullobject, ref nullobject, ref nullobject, ref nullobject, ref nullobject, ref nullobject, ref nullobject, ref nullobject, ref nullobject, ref nullobject, ref nullobject);

                word.DisplayAlerts = WdAlertLevel.wdAlertsNone;

                Documents documents = word.Documents;
                doc = documents.Open(path, NoEncodingDialog: true);
                doc.ActiveWindow.Selection.WholeStory();
                doc.ActiveWindow.Selection.Copy();


                return Clipboard.GetText(TextDataFormat.Rtf);
            }
            catch (Exception ex)
            {
                Log.Error(ex.Message, "Something went wrong");
                return string.Empty;
            }
            finally
            {
                //word.ScreenUpdating = true;

                if (doc != null)
                    doc.Close();

                if (word != null)
                    word.Quit();
            }

        }

код выше вешает UI , не понимаю почему, ведь я его вызываю в

public class EncodingViewModel : BaseViewModel


public class BaseViewModel : INotifyPropertyChanged

то есть как понимаю не в основном потоке UI
Re: зависает приложение WPF
От: BlackEric http://black-eric.lj.ru
Дата: 27.12.22 20:01
Оценка:
Здравствуйте, dsalodki, Вы писали:

D> код выше вешает UI , не понимаю почему, ведь я его вызываю в


А на чем именно вешает?

D>
D>public class EncodingViewModel : BaseViewModel
D>


D>
D>public class BaseViewModel : INotifyPropertyChanged
D>

D>то есть как понимаю не в основном потоке UI

Как вы его вызываете?

Если проблема только в зависании UI, то сделайте Task.Run(...) или что-то в этом роде.
https://github.com/BlackEric001
Re[2]: зависает приложение WPF
От: dsalodki Беларусь http://dsalodki.wix.com/resume
Дата: 27.12.22 20:07
Оценка:
Здравствуйте, BlackEric, Вы писали:

BE>Здравствуйте, dsalodki, Вы писали:


D>> код выше вешает UI , не понимаю почему, ведь я его вызываю в


BE>А на чем именно вешает?


D>>
D>>public class EncodingViewModel : BaseViewModel
D>>


D>>
D>>public class BaseViewModel : INotifyPropertyChanged
D>>

D>>то есть как понимаю не в основном потоке UI

BE>Как вы его вызываете?


BE>Если проблема только в зависании UI, то сделайте Task.Run(...) или что-то в этом роде


Спасибо, понял, но там Clipboard, поэтому на метод атрибут STAThread и в потоке, вроде получилось
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.