0

나는 이로 인해 겁 먹었습니다. 내 연락처를 수정하기 전에 백업이 필요한 C# 응용 프로그램이 있습니다. 그러나 사본이 무엇이든 상관없이 주위에 붙어있는 것처럼 보입니다. Outlook의 내 콘텐츠 폴더 내용을 시각적으로 확인하여이를 확인하고 있습니다. Outlook 개체 모델 ContactItem이 삭제되지 않습니다

나는

Application outlookApplication = new Application(); 
NameSpace outlookNamespace = outlookApplication.GetNamespace("mapi"); 
outlookNamespace.Logon("", "", true, true); 
MAPIFolder Folder = outlookNamespace.GetDefaultFolder(OlDefaultFolders.olFolderContacts); 
MAPIFolder Folder2 = Folder.Folders["Test1"]; 
Items ContactItems = Folder2.Items; 
foreach (ContactItem Contact in ContactItems) 
{ 
    ContactItem Backup = (ContactItem)Contact.Copy(); 
    Backup.Delete(); 
    break; 
} 
outlookNamespace.Logoff(); 
outlookNamespace = null; 

내가 두 번을 삭제하려고하면, 그것은 오류가 발생합니다 ...과 같이 간단한 테스트 케이스가 있습니다. 삭제 된 항목 폴더로 이동하려고 시도했지만 행운은 없습니다. Outlook 2010. 무슨 일 이니?

편집 : 해결 방법 : 해결 방법 : 새 연락처를 만들고 원본에서 채우면 잘 삭제할 수 있습니다.

+0

내 대답을 시도 했습니까? – JimmyPena

+0

안녕하세요, JP에서 일 했으므로이 문제를 다시 살펴 보지 않았습니다. 그것은 여전히 ​​최우선 순위가 아니라 뒷 버너에 있습니다. 문제를 다시 체크 아웃하면 답변을 시도하고 그에 따라 회신을 드리겠습니다. – Jahmic

답변

0

저는 C# 구문에 익숙하지 않지만 복사본을 만들 때 Items 컬렉션에 추가하기 때문에 의심 스럽습니다. ContactItems의 수를 확인하십시오 foreach 루프의 시작 전에

: 나는이 작업을 수행 할 것

Items ContactItems = Folder2.Items; 
' display ContactItems.Count here, is it Console.WriteLine(ContactItems.Count) ?? 

복사본을 생성 한 후, 다시 ContactItems.Count을 확인합니다. 그것이 증가했다면 루프를 "for i = ContactItems.Count에서 1 Step -1"로 바꾸는 것이 필요합니다 (미안, VB 구문 만 알고 있습니다. 동등한 C# 구문). 역방향 루프 여야합니다.

그래도 작동하지 않으면 복사본을 만들어 다른 연락처 폴더에 추가하면 작업중인 폴더의 Items 컬렉션을 방해하지 않습니다. 그것은 당신이 이미하고있는 것과 비슷합니다.