ストアドプロシージャを実行するダッシュボードdevexpress
を追加すると時間がかかります。だから私はform_load
Start thread returns System.InvalidOperationException:現在のSynchronizationContextがTaskSchedulerとして使用されない可能性があります。
public void LoadDashboard()
{
using (Stream s = new MemoryStream(Encoding.Default.GetBytes(Resource.Dashboard.MaterialDashboard1)))
{
s.Position = 0;
dashboardViewer1.LoadDashboard(s);
}
}
private void frmMaterialDashboard_Load(object sender, EventArgs e)
{
Thread newth=new Thread(LoadDashboard);
newth.Start();
int UserId = int.Parse(Configuration.AccountDetail.UserId.ToString());
lblUserName.Caption = _userRepository.Get().Where(i => i.Id == UserId).First().FullName;
alertControl1.Show(this, "Welcome","Welcome to SPMS Mr."+_userRepository.FindById(Configuration.AccountDetail.UserId).First().FullName +"\n Server time:"+DateTime.Now);
}
に自分のアプリケーションでは、単純なスレッドを作成した。しかし、私は自分のアプリケーションを実行すると、私はこのエラーを取得:
タイプの未処理の例外「DevExpress.DashboardCommon.DashboardInternalException」DevExpress社で発生しました.Dashboard.v15.2.Win.dll
追加情報:内部エラー。アプリケーションベンダーまたはシステム管理者に連絡し、以下の情報を提供してください。
System.InvalidOperationException:現在のSynchronizationContextがTaskSchedulerとして使用されていない可能性があります。 DevExpress.DashboardCommon.Service.DashboardService.DevExpress.DashboardCommon.Serviceで
System.Threading.Tasks.SynchronizationContextTaskScheduler..ctorでDevExpress.DashboardWin.Native.WinDashboardService.RequestCustomizationServicesで()
(RequestCustomizationServicesEventArgs電子)
。 IDashboardServiceAdminHandlers.OnRequestCustomizationServices(オブジェクト送信者、RequestCustomizationServicesEventArgs E)DevExpress.DashboardCommon.Server.DashboardSession.CreateDataLoaderでDevExpress.DashboardCommon.Server.DashboardSession.CreateDataLoaderParameters(ReloadDataArgsの引数)で
(ReloadDataArgsの引数)
のDevでDevExpress.DashboardCommon.Service.DashboardServiceOperation`1でExpress.DashboardCommon.Server.DashboardSession.LoadData(IEnumerableを1 dataSourceComponentNames, ReloadDataArgs args)
1 dataSourceComponentNames、ReloadDataArgs引数)DevExpress.DashboardCommon.Server.DashboardSession.Initialize(DashboardSessionState状態、ブールisDesignMode)で
at DevExpress.DashboardCommon.Server.DashboardSession.ReloadData(IEnumerable
。
が、私はこのように私のコードを変更
を更新し、それがエラーなしで動作し、データが示されているが、どの非同期操作なしで、私はDATをロードするために待たなければならない(DashboardServiceResult結果)を実行a
public async Task<Stream> LoadDashboard()
{
Stream s = new MemoryStream(Encoding.Default.GetBytes(Resource.Dashboard));
s.Position = 0;
return s;
}
private async void frmMaterialDashboard_Load(object sender, EventArgs e)
{
Stream dashboardData = await LoadDashboard();
dashboardViewer1.LoadDashboard(dashboardData);
int UserId = int.Parse(Configuration.AccountDetail.UserId.ToString());
lblUserName.Caption = _userRepository.Get().Where(i => i.Id == UserId).First().FullName;
alertControl1.Show(this, "Welcome","Welcome to SPMS Mr."+_userRepository.FindById(Configuration.AccountDetail.UserId).First().FullName +"\n Server time:"+DateTime.Now);
}
ガッチャ:明示的に新しいスレッドを起動しないように簡略化ソリューションを考えてみましょう。 –
@ShannonHolsinger私はちょうど私のアプリケーションでこのスレッドを持っています –
ええ、私はその名前空間について知っている何かは、UIの "もの"(コントロール、何でも)のように見える、別のスレッドで実行する場合に問題があるだろう。あなたは楽しい&冒険のためのUIスレッドでそれを実行しようとしましたか? –