1

編集:accountrepositoryの問題-membershipprovider

私は現在、未完成のゲームを探して更新する無限ループを作りたいタイプのゲームを構築しようとしています。(数分おき)

以下は、継続的に実行したいコードであり、application_startでEngineクラスを呼び出します。試してみると、モデルがまだ作成されていないという問題が発生します。

モデルが作成されるまで待ってからそのスレッドを開始する方法はありますか?

前もって感謝します !(以下のスタックトレース)

「モデルの作成中はコンテキストを使用できません。」

 public class VluchtEngine
    {
        private VluchtRepository _vluchtRepository;

        private TimeSpan WaitTime = new TimeSpan(0, 0,30);

        public VluchtEngine(PigeonFancierContext c)

        {
            _vluchtRepository = new VluchtRepository(c);


            Task t2 = Task.Factory.StartNew(Run);


            }

        public void Run()
        {

            while (/*_vluchtRepository.FindAll().Where(p => p.IsGesimuleerd ==                   false).Count() > 0)*/true)
            {
                foreach (var vlucht in _vluchtRepository.FindAll())
                {
                    foreach (var duif in vlucht.Inschrijvingen)

                    {
                        duif.AfgelegdeAfstand += 1;
                        if (duif.AfgelegdeAfstand == vlucht.Afstand)
                            duif.IsAangekomen = true;
                    }

                    if(vlucht.Inschrijvingen.Where(p => p.IsAangekomen).Count() == 0)
                    {
                        vlucht.IsGesimuleerd = true;
                    }
                }

                _vluchtRepository.SaveChanges();


                Thread.Sleep(WaitTime);


            }

        }


}
}





[InvalidOperationException: The context cannot be used while the model is being created.]
   System.Data.Entity.Internal.LazyInternalContext.InitializeContext() +577466
   System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) +18
   System.Data.Entity.Internal.Linq.InternalSet`1.Initialize() +63
   System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext() +15
   System.Data.Entity.Infrastructure.DbQuery`1.System.Linq.IQueryable.get_Provider() +37
   System.Linq.Queryable.Where(IQueryable`1 source, Expression`1 predicate) +63
   PigeonFancier.Infrastructuur.MelkerRepository.FindByEmail(String email) in C:\Users\Jonas\Documents\Visual Studio 2010\Projects\PigeonFancier\PigeonFancier\Infrastructuur\MelkerRepository.cs:39
   PigeonFancier.Infrastructuur.MelkerModelBinder.BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) in C:\Users\Jonas\Documents\Visual Studio 2010\Projects\PigeonFancier\PigeonFancier\Infrastructuur\MelkerModelBinder.cs:22
   System.Web.Mvc.ControllerActionInvoker.GetParameterValue(ControllerContext controllerContext, ParameterDescriptor parameterDescriptor) +317
   System.Web.Mvc.ControllerActionInvoker.GetParameterValues(ControllerContext controllerContext, ActionDescriptor actionDescriptor) +117
   System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +343
   System.Web.Mvc.Controller.ExecuteCore() +116
   System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +97
   System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +10
   System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +37
   System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +21
   System.Web.Mvc.Async.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) +12
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62
   System.Web.Mvc.<>c__DisplayClasse.<EndProcessRequest>b__d() +50
   System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0(Action f) +7
   System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action) +22
   System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +60
   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8970061
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +184 
4

1 に答える 1

1

Windows ServiceApplciationstartでコードを実行する代わりに使用することをお勧めします

そうでない場合 Ajax Call with Sleep Interval of 60 seconds in Master PageまたはHTML5 Web Sockets

于 2012-06-12T15:18:35.577 に答える