我有一个普通的windows窗体程序(不是VSTO),它使用单击一次进行部署。问题是加载的用户在随机错误方面有问题,通常声明(从IClassFactory失败,由于以下错误: 80004005)。
我正在通过将模式更改为“隔离”来部署赎回,这似乎对某些用户有效,但对其他用户无效。
arn无法工作的用户可以通过手动安装Redemption DLL来修复。
谁能解释如何自动化的过程(我真的希望它是免费的,这样用户就不需要管理员权限来安装)。
谢谢
罗斯
发布于 2009-07-26 14:45:05
解决了这个问题。问题是我在后台线程上加载了redemption对象,并试图在UI线程上操作它们。确保在使用对象时保持一致。
发布于 2012-07-29 15:57:20
在后台线程中使用Redemption是完全可能的,如果你做得正确的话。您创建的firsr对象必须在UI线程中创建,因为某些RDOSession内部结构需要在同一线程中创建消息泵。通常,此RDOSession应该在您的应用程序的生命周期中保留。您不能从任何其他线程访问此对象。
您需要将第一个RDOSession的MAPIOBJECT属性传递给每个工作线程,在每个线程中创建一个新的RDOSessuion对象,然后将RDOSession中的MAPIOBJECT分配给线程中创建的第二个RDOSession。示例:
(Aircode警告:下面的代码是从内存中键入的。)
Dim PrimaryRDOSession As New Redemption.RDOSession()
PrimaryRDOSession.Login([...])
Dim WorkerThread as New System.Threading.Thread(AddressOf ThreadProc)
WorkerThread.Start(PrimaryRDOSession.MAPIOBJECT)
Sub ThreadProc(ByVal param as Object)
Dim ThdRDOSession As New Redemption.RDOSession()
ThdRDOSession.MAPIOBJECT = param
' do other stuff
End Sub从那里你可以做任何你通常使用赎回做的事情。如果在一个线程中选择/定位Outlook对象,并在另一个线程中对其执行操作,则可以在线程之间传递EntryID。
发布于 2012-02-06 02:33:08
Outlook赎回(Redemption.dll)和后台线程不能混合使用。
与您的情况类似,我们使用后台线程登录到Exchange Server。
这会导致出现无法登录Exchange的间歇性赎回错误。
此外,我的一个同事在后台线程中设置了一个Email Pop调用,同样,它有时可以工作,有时不能。
当使用Redemption时,总是让主UI线程处理它的操作。
赎回并不会真正锁定应用程序,因为在弹出电子邮件、添加约会、甚至连接到email Sent Redemption事件以处理通过电子邮件发送的信息的日志记录等时,确实没有长时间运行的进程。
https://stackoverflow.com/questions/1158347
复制相似问题