>source

15분마다 프로젝트 번호를 새로 고치는 사용자 정의 컨트롤에 대한 타이머 설정이 있습니다. Visual Studio가 무작위로 충돌한다는 사실을 알아차리기 시작했습니다. 글쎄요, 어쨌든 당시에는 무작위로 보였던 것입니다. 나는 이벤트 로그를 살펴보기 시작했고 내 컨트롤의 타이머가 실행되고 있음을 발견했습니다. 연결/엔티티 프레임워크 지연 로딩 문제로 인해 오류가 발생하여 VS가 충돌했습니다.

내가 사용하고 있는 것을 보니!this.디자인 모드아래에서 이 작업이 실행되지 않도록 하려면 무엇을 더 할 수 있습니까?

제 timer_tick 이벤트는 다음과 같습니다.

private void timer_Tick(object sender, EventArgs e)
    {
        if (!this.DesignMode) {
            LoadProjectNumbers();
        }
    }

다음은 이벤트 로그의 예외 텍스트입니다.

Application: devenv.exe
    Framework Version: v4.0.30319
    Description: The process was terminated due to an unhandled exception.
    Exception Info: System.InvalidOperationException at
    System.Data.Entity.Internal.LazyInternalConnection.get_ConnectionHasModel()
   at System.Data.Entity.Internal.LazyInternalContext.InitializeContext()
   at    System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(System.Type)
   at System.Data.Entity.Internal.Linq.InternalSet`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].Initialize()
   at System.Data.Entity.Internal.Linq.InternalSet`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].get_InternalContext()
   at System.Data.Entity.Infrastructure.DbQuery`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].System.Linq.IQueryable.get_Provider()
   at System.Linq.Queryable.OrderByDescending[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Linq.IQueryable`1<System.__Canon>, System.Linq.Expressions.Expression`1<System.Func`2<System.__Canon,Int32>>)
   at ACGICore.Controls.ProjectNumberSearch.LoadProjectNumbers()
   at ACGICore.Controls.ProjectNumberSearch.timer_Tick(System.Object, System.EventArgs)
   at System.Windows.Forms.Timer.OnTick(System.EventArgs)
   at System.Windows.Forms.Timer+TimerNativeWindow.WndProc(System.Windows.Forms.Message ByRef)
   at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr, Int32, IntPtr, IntPtr)

디자인 모드에 있는 경우 타이머를 "시작하지 않을" 수 있습니까? 타이머가 전혀 작동하지 않아야 합니다.

Ron Beyer2021-11-10 07:15:14

가능한 모든 곳에서 enabled=false로 설정했습니다. 타이머도 실행되어야 한다고 생각하지 않았지만 다른 곳에서 타이머가 실행될 수 있다는 것을 읽었습니다.

Tony Evans2021-11-10 07:15:14

좋습니다. 몇 가지 접근 방식을 시도해 보고 어떤 결과를 얻을 수 있는지 보겠습니다. 감사 해요.

Tony Evans2021-11-10 07:15:14
  • 이전 javascript : "잡히지 않은 참조 오류: Firebase가 정의되지 않았습니다"를 반환하는 Firebase 초기화
  • 다음 C++ 다른 라이브러리 없이 비트맵 이미지에 텍스트 그리기