1

再会,

我收到的错误与此处讨论的错误非常相似(在此处和其他地方的其他来源中):STAThread 缺失,但它就在那里

不同之处在于,就我而言,我使用的是多线程。ABackgroundWorker正在生成文档,完成后,FolderBrowseDialog将弹出 a 以允许用户选择保存生成的文档的位置。所以我可以理解为什么我会收到这个错误。我选择将事件和相关代码放入的原因FolderBrowseDialogBackgroundWorker因为这样我就可以直接访问路径,而不是将字符串从一个线程传递到另一个线程。

有趣的是,虽然PrintDialog有效,但SaveFileDialogFolderBrowseDialog引发此错误。

我只是想听听你的想法。FolderBrowseDialog将代码移出是否最好BackgroundWorker?我应该实施自定义FolderBrowseDialog吗?有没有办法解决?

提前感谢您的意见和建议,以及所有花时间考虑我的问题的人;非常感激。

亲切的问候

4

1 回答 1

2

FolderBrowseDialog 是在RunWorkerCompleted回调中调用还是在DoWork回调中调用?如果从 DoWork 回调中调用它,则需要使用创建 BackgroundWorker 的SynchronizationContext并使用Send方法来显示 FolderBrowseDialog。

http://thedersen.com/2010/05/23/showing-modal-dialogs-from-a-background-thread/是我在网上能找到的最接近的例子。在该示例中,Worker类用于存储 SynchronizationContext。

于 2012-02-10T12:01:47.113 回答