はここで...以下のコードで私の問題を生成するために、私の簡単な手順をだVSTO:Outlookは「変更を保存しますか? ... なぜ?
- 実行プロジェクト
- メールを閉じattacment
- を追加し、新しいメール
- を作成する - と私は最初に尋ねましたよ変更を保存する時間 - 私はnoを選択します
- Outlookアプリケーションを閉じます - 変更を保存するために2回質問します...なぜですか?ここで
は私のサンプルコードは、変更を保存するにはアプリを閉じたとき、それは私の二回に尋ねるなぜ
Imports System.Runtime.InteropServices
Public Class ThisAddIn
Private Shared _currentMailItem As Outlook.MailItem
Private Sub ThisAddIn_Startup() Handles Me.Startup
AddHandler Me.Application.ItemLoad, AddressOf LoadMail
End Sub
Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown
End Sub
Private Shared Sub LoadMail(Item As Object)
If TypeOf Item Is Outlook.MailItem Then
_currentMailItem = TryCast(Item, Outlook.MailItem)
AddHandler _currentMailItem.Open, AddressOf OpenMail
End If
End Sub
Private Shared Sub OpenMail(ByRef Cancel As Boolean)
If String.IsNullOrEmpty(_currentMailItem.EntryID) Then
AddHandler _currentMailItem.AttachmentAdd, AddressOf MailItem_AttachementAdded
AddHandler _currentMailItem.Close, AddressOf MailItem_Close
End If
End Sub
Private Shared Sub MailItem_AttachementAdded(e As Outlook.Attachment)
For Each a As Outlook.Attachment In _currentMailItem.Attachments
Next
End Sub
Private Shared Sub MailItem_Close(ByRef cancel As Boolean)
If String.IsNullOrEmpty(_currentMailItem.EntryID) Then
RemoveHandler _currentMailItem.AttachmentAdd, AddressOf MailItem_AttachementAdded
RemoveHandler _currentMailItem.Close, AddressOf MailItem_Close
End If
End Sub
End Class
は、あなたが見ることができる...ですか?
さらに、私はMarshal.ReleaseComObject()をいつ使うべきかわかりません - 私のFor Each a As Outlook.Attachment In _currentMailItem.Attachments
のように...私はMarshal.ReleaseComObject(a)をループに入れますか?
おかげ
このコードはまだ本家失敗UPDATE ....
私は、オブジェクトを解放しようと...
Imports System.Runtime.InteropServices
Public Class ThisAddIn
Private _currentMailItem As Outlook.MailItem
Private Sub ThisAddIn_Startup() Handles Me.Startup
AddHandler Me.Application.ItemLoad, AddressOf LoadMail
End Sub
Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown
End Sub
Private Sub LoadMail(Item As Object)
If TypeOf Item Is Outlook.MailItem Then
_currentMailItem = TryCast(Item, Outlook.MailItem)
AddHandler _currentMailItem.Open, AddressOf OpenMail
End If
End Sub
Private Sub OpenMail(ByRef Cancel As Boolean)
If String.IsNullOrEmpty(_currentMailItem.EntryID) Then
AddHandler _currentMailItem.AttachmentAdd, AddressOf MailItem_AttachementAdded
AddHandler _currentMailItem.Close, AddressOf MailItem_Close
End If
End Sub
Private Sub MailItem_AttachementAdded(e As Outlook.Attachment)
For i As Integer = 0 To _currentMailItem.Attachments.Count - 1
Dim a As Outlook.Attachment = _currentMailItem.Attachments(i + 1)
Marshal.ReleaseComObject(a)
a = Nothing
Next
End Sub
Private Sub MailItem_Close(ByRef cancel As Boolean)
If String.IsNullOrEmpty(_currentMailItem.EntryID) Then
RemoveHandler _currentMailItem.AttachmentAdd, AddressOf MailItem_AttachementAdded
RemoveHandler _currentMailItem.Close, AddressOf MailItem_Close
End If
Marshal.ReleaseComObject(_currentMailItem)
_currentMailItem = Nothing
End Sub
End Class
あなたの提案で自分のコードを更新しようとしましたが、変更を3回保存するように依頼するのに失敗しました。 – MojoDK
コードはどこで更新できますか? –
最初の投稿(上部)に...「更新」セクションが作成されました。 – MojoDK