我添加了運行存儲過程的儀表板devexpress
,並且它需要很長時間。所以,我在form_load
開始線程返回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。
在System.Threading.Tasks.SynchronizationContextTaskScheduler..ctor()
在DevExpress.DashboardWin.Native.WinDashboardService.RequestCustomizationServices(RequestCustomizationServicesEventArgs E)
在DevExpress.DashboardCommon.Service.DashboardService.DevExpress.DashboardCommon.Service。 IDashboardServiceAdminHandlers.OnRequestCustomizationServices(對象發件人,RequestCustomizationServicesEventArgs E)
在DevExpress.DashboardCommon.Server.DashboardSession.CreateDataLoaderParameters(ReloadDataArgs參數) 在DevExpress.DashboardCommon.Server.DashboardSession.CreateDataLoader(ReloadDataArgs參數)
在開發Express.DashboardCommon.Server.DashboardSession.LoadData(IEnumerable的1 dataSourceComponentNames, ReloadDataArgs args)
1 dataSourceComponentNames,ReloadDataArgs參數)
at DevExpress.DashboardCommon.Server.DashboardSession.ReloadData(IEnumerable
在DevExpress.DashboardCommon.Server.DashboardSession.Initialize(DashboardSessionState狀態,布爾isDesignMode)
在DevExpress.DashboardCommon.Service.DashboardServiceOperation`1。執行(DashboardServiceResult結果)
更新
我改變這樣的代碼,它的工作原理沒有任何錯誤和數據顯示,但沒有任何異步操作,我不得不等待加載DAT一個
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);
}
Gotcha - nvrmind ...感謝您的更新信息。 –
@ShannonHolsinger我只是在我的應用程序中有這個線程 –
是的,我對這個名字空間看起來像一個UI「東西」(控件,不管),如果你在一個單獨的線程上運行會遇到問題。您是否嘗試過在UI線程上運行它以獲得樂趣和冒險? –