首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从C#与Lotus Notes交互的最佳方式和推荐实践是什么

从C#与Lotus Notes交互的最佳方式和推荐实践是什么
EN

Stack Overflow用户
提问于 2008-09-05 02:21:53
回答 10查看 3.8K关注 0票数 16

特别是,我必须以最快、最可靠的方式从Lotus Notes文件中提取所有邮件和附件。另一点可能相关的是,我需要从辅助线程执行此操作。

编辑

谢谢你的回答--这两个答案都很好。我应该提供更多的背景信息。

我们目前有一个WinForms应用程序,它有一个使用Notes COM API的后台线程。

然而,它似乎并不稳定。(当然,这可能是我们做错了什么。)例如,我们发现必须在主线程上预初始化Notes session,否则在后台线程上对session.CreateDXLExporter()的调用会抛出异常。

EN

回答 10

Stack Overflow用户

发布于 2010-07-17 01:19:24

我真的很讨厌那个NotesSession COM对象。

除了初始化它的线程之外,您不能在其他线程中使用它。.NET中的线程是纤程,真正的底层线程随时可能改变。

因此,我建议这样使用它,在using块中:

代码语言:javascript
复制
Imports Domino
Imports System.Threading

Public Class AffinitedSession
    Implements IDisposable

    Private _session As NotesSession
    Public Sub New(ByVal pass As String)
        Thread.BeginThreadAffinity()
        _session = New NotesSession()
        _session.Initialize(pass)
    End Sub

    Public ReadOnly Property NotesSession() As NotesSession
        Get
            Return _session
        End Get
    End Property

    Private disposedValue As Boolean = False        ' To detect redundant calls

    ' IDisposable
    Protected Overridable Sub Dispose(ByVal disposing As Boolean)
        If Not Me.disposedValue Then
            If disposing Then
                ' TODO: free other state (managed objects).
            End If

            ' TODO: free your own state (unmanaged objects).
            ' TODO: set large fields to null.
            _session = Nothing
            Thread.EndThreadAffinity()
        End If
        Me.disposedValue = True
    End Sub

#Region " IDisposable Support "
    ' This code added by Visual Basic to correctly implement the disposable pattern.
    Public Sub Dispose() Implements IDisposable.Dispose
        ' Do not change this code.  Put cleanup code in Dispose(ByVal disposing As Boolean) above.
        Dispose(True)
        GC.SuppressFinalize(Me)
    End Sub
#End Region

End Class

请注意Thread.BeginThreadAffinity()和Thread.EndThreadAffinity()

那些是你的朋友。

干杯!

票数 6
EN

Stack Overflow用户

发布于 2008-10-22 16:06:40

Lotus Notes COM Api参考资料可以在here中找到

要在VB.Net中获取Notes会话(起始点),您可以使用:

代码语言:javascript
复制
Dim oSess As Object = Nothing
oSess = CreateObject("Notes.NotesSession")

我通常用C#编程,因为要用COM操作,我更喜欢VB.Net

最好从同一线程访问所有COM服务器,除非您确定这不会造成任何麻烦。

票数 3
EN

Stack Overflow用户

发布于 2008-09-05 02:42:11

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档