从后台线程以编程方式在UI线程中创建UI并再次将其复制到后台线程?

时间:2011-12-30 08:04:36

标签: c# .net wpf multithreading

以下是我开始新线程的方法:

  private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            System.Threading.Thread myThread = new System.Threading.Thread(prePrint);
            myThread.Start();                    
        }

prePrint功能如下:

 private void prePrint()
        {
            for (int j = 0; j < DataHandle.Recipe.Count; j++)
            {
                // create print dialog
                // create print ticket.
                FlowDocument fd = new FlowDocument();

                // assign the createFD(int j) to fd here. << HERE IS THE MAIN PROBLEM

                DocumentPaginator sd = ((IDocumentPaginatorSource)fd).DocumentPaginator;

                 // print the flow document here

            }
         }


  private FlowDocument createFD(int j) {

                                          FlowDocument fd = new FlowDocument();
                                          return fd;

                                        }

我想在UI线程中创建流文档并将其复制到后台线程,最后打印(如果可能的话)。

我对这项技术很陌生。请帮我找到更好的方法。

1 个答案:

答案 0 :(得分:0)

好吧,基本的诀窍是使用Dispatcher的{​​{1}}并使用FlowDocument调用该函数。顺便说一下,文档只能在UI线程上创建并在创建它的线程上使用,但如果文档结构首先构建并保存到内存BeginInvoke()之后,则可以对其进行优化。对此表现有点怀疑,你应该检查一下。

看这里,一个很好的例子imo:http://chrismylonas.blogspot.com/2007/12/flowdocument-and-multiple-threads.html