public void Show(LavaUser user) { this.Title = user.UserName; this.Show(); currentUser = user; LoadingScreen.LoadingScreen loadingScreen = new LoadingScreen.LoadingScreen(); loadingScreen.Show(); // Open document var LoadingThread = new BackgroundWorker(); //Запуск процесса десереализации в фоновом потоке LoadingThread.DoWork += (s, args) => { try { IFileTransfer fileHost = new FileTransferClient(); string[] fileList = fileHost.GetFileList(user.UserName); if (fileList == null) throw new Exception("Error. File list in null"); foreach (var file in fileList) { //Получаем файл. Расшифровываем. Парсим. entrys.Deserialize(file, CryptoLibrary.decrypt28147cfb(user.MasterKey, GetFile(fileHost, file))); } } catch (Exception ex) { args.Result = ex.Message; } }; LoadingThread.RunWorkerCompleted += (s, e) => { if (e.Result != null) MessageBox.Show(loadingScreen, e.Result.ToString(), "Error!", MessageBoxButton.OK, MessageBoxImage.Error); loadingScreen.Close(); }; LoadingThread.RunWorkerAsync(); }
// Visible for testing internal static void PopulateScene(Texture2D backgroundTexture, string assetBundleUrl) { var loadingScreenGameObject = new GameObject("Loading Screen"); var camera = GenerateCamera(); camera.transform.SetParent(loadingScreenGameObject.transform, false); var canvasObject = GenerateCanvas(camera); canvasObject.transform.SetParent(loadingScreenGameObject.transform, false); var backgroundImage = GenerateBackground(backgroundTexture); backgroundImage.transform.SetParent(canvasObject.transform, false); var loadingContainer = LoadingBarGenerator.GenerateLoadingContainer(); loadingContainer.SetParent(canvasObject.transform, false); var retryButton = GenerateRetryButton(); retryButton.transform.SetParent(loadingContainer.transform, false); var loadingScreen = loadingScreenGameObject.AddComponent <LoadingScreen.LoadingScreen>(); loadingScreen.AssetBundleUrl = assetBundleUrl; loadingScreen.LoadingBar = LoadingBarGenerator.GenerateLoadingBar(); loadingScreen.RetryButton = retryButton; loadingScreen.LoadingBar.transform.SetParent(loadingContainer.transform, false); loadingScreen.LoadingBar.transform.SetAsFirstSibling(); // Places loading bar behind the retry button. // Hook up the retry button here so that the AttemptAssetBundleDownload function shows up in its inspector. UnityEventTools.AddPersistentListener(retryButton.onClick, loadingScreen.ButtonEventRetryDownload); CurrentLoadingScreen = loadingScreen; }