2016-11-23 2 views
2

매우 느린이며 완벽하게 작동합니다 :Process.Start를 내가 현재이 방법을 사용하고

public static void CreateEmailInDefaultMailEditor(string to, string subject, string body) 
{ 
    Process.Start($"mailto:{to}?subject={subject}&body={body}");   
} 

난 다음 다른 컴퓨터에서 그것을 시도하고 자사도 작업이지만 매우 느린 (더 그 일분 내 메일 편집기를 열어 라!).
(System.dll의) Process.Start 메서드를 디버깅하고 매우 느리게 실행되는 NativeMethod.ShellExecuteEx 메서드가 끝날 때 문제가 있음을 확인했습니다.

은 또한 이메일

public static void CreateEmailInOutlook(string to, string subject, string body) 
{ 
    Process.Start("outlook.exe", $"mailto:{to}?subject={subject}&body={body}");   
} 

에게 보내 열립니다 프로그램의 이름을 지정하는 문제를 해결 것으로 나타났습니다하지만 그게이 다른에 컴퓨터에서 제대로 작동하지 왜 설명하지 않습니다 동일한 일을하지 않습니다 : 프로그램을 지정하지 않으면 자동으로 기본 프로그램이 열립니다.

질문은 매우 간단합니다. 왜이 동작과 해결 방법은 무엇입니까?

+1

맬웨어 방지 프로그램을주는 경향이 있습니다. 따라서 일시적으로 사용 중지하고 다시 시도하여 범인인지 확인하십시오. –

+0

Hans에 동의하면 AV 설치시 수동으로 Outlook을 시작하는 데 어느 정도 시간이 걸립니다. 특히 Outlook에 통합되는 플러그인이있는 경우 –

+0

프로그램을 지정하지 않고 * shell *은 레지스트리에서 적절한 것을 찾아야합니다. 거기에 일이 느려지는 불일치가있을 수 있습니다. – MrPaulch

답변

0

답변 주셔서 감사합니다. & 개의 댓글을 주셔서 감사합니다. 두 는 내가 테스트 내 부서의 모든 컴퓨터에 문제를 재현 할 수있는 (그리고 :

다음

질문에 작은 갱신 아마도 솔루션 (난 아직도 문제가 무엇인지 완전히 확실하지 않다) 내 질문에 언급). 며칠 후, 모든 것이 다시 작동하고 있음을 발견했습니다. 나는 내 프로그램의 코드를 변경하지 않았고 안티 바이러스를 비활성화하지도 않았다.

내 질문에 언급하지 않은 것은 (나는 중요하지 않다고 생각했다.) 모든 컴퓨터가 새로운 것입니다.그리고 나는 그것이 문제 일 수 있다고 생각한다 : Windows는 색인 서비스를 가지고 있으며 처음에는 전체 컴퓨터가 검사 될 때까지 며칠이 걸릴 수 있다고 상상할 수있다. 이 경우 기본 메일 관리자를 검색하는 데 시간이 오래 걸릴 수 있지만 인덱싱 서비스가 작업을 마자 마자 기본 메일 관리자를 검색하는 것이 빠릅니다.

0

아마도이 답변은 만족스럽지 않을 것입니다.

제 생각에는 특정 메일 클라이언트에 대한 가정을하는 개정 된 코드보다 쉘을 통해 mailto: URL을 시작하는 원래 코드를 선호해야합니다. 특별히 outlook.exe을 시작하지 마십시오. 이 프로세스가 사용 가능하거나 어떤 시스템 에나있을 수 있다는 보장은 없습니다. 나쁜 성능에

:

"나는 다음 다른 컴퓨터에서 그것을 시도 ..."이 하나 개의 시험에서

, 당신은 당신의 프로그램에가는 것을 결론 표시 자신이 아닌 다른 컴퓨터에서 천천히 실행되므로 변경해야합니다. 나는 결론이시기 상조라고 말한다. 먼저, 몇 가지 다른 컴퓨터에서 테스트하십시오.

  • 귀하의 가정이 검증 된 경우에만 (귀하가 원래 코드 IMHO에 대한 실용적인 대안을 갖고 있지는 않지만) 코드를 변경해야합니다.
  • 그러나 프로그램을 시도한 다른 컴퓨터가 다른 컴퓨터보다 속도가 느리다면 간단히 잘못 구성 될 수 있으며 해당 사실을 해결하는 것은 프로그램의 책임이 아닙니다.