Exemplo n.º 1
0
        /// <summary>
        /// Запускает потоки отслеживающие изменения счёты рынков. Так же метод вызывает запуск события, для отображения загрузки.
        /// </summary>
        public void StartThreads()
        {
            LoadedEvent?.Invoke(new LoadedEventArgs(true, false));
            var thread = new Thread(() =>
                                    {;
                                     //Load all markets
                                     GetAll(TypeDBO.BetFair);
                                     GetAll(TypeDBO.Bet365);
                                     GetAll(TypeDBO.SkyBet);
                                     //End load markets
                                    });

            thread.Start();
            while (true)
            {
                if (isStop)
                {
                    return;
                }
                if ((NewSkyBet.isLoad) && (Bet365.isLoad))
                {
                    break;
                }
                Application.DoEvents();
                Thread.Sleep(100);
            }
            LoadedEvent?.Invoke(new LoadedEventArgs(false, true));
        }
Exemplo n.º 2
0
        public void ItConvertsLoadedEvents()
        {
            var type = new EmployeeTypeMap()
                       .Single(o => o.type == typeof(EmployeeHired)).name;
            var evt    = A.Dummy <EmployeeHired>();
            var json   = JsonConvert.SerializeObject(evt);
            var bytes  = Encoding.UTF8.GetBytes(json);
            var loaded = new LoadedEvent
            {
                Type = type,
                Data = bytes
            };

            var result = sut.ConvertReadToDomain(new EmployeeTypeMap(), loaded);

            result.Should().BeEquivalentTo(evt);
        }
Exemplo n.º 3
0
 protected virtual void RaiseLoadedEvent()
 {
     // Raise the event in a thread-safe manner using the ?. operator.
     LoadedEvent?.Invoke(this, new EventArgs());
 }
Exemplo n.º 4
0
        /// <summary>
        /// 本地资源加载
        /// 从Resources加载一个资源
        /// </summary>
        /// <param name="prefabName">资源名称</param>
        /// <param name="type">资源类型</param>
        /// <param name="loadedAction">加载完成后的回调</param>
        /// <param name="isKeepInMemory">是否长期保存在内存中</param>
        public void LoadAssetQueue(string assetName, string assetBundleName = null, LoadedEvent loadedEvent = null, Type type = null, bool isKeepInMemory = false)
        {
            // 是否已下载
            AssetInfo assetInfo = GetOrAddAssetInfo(assetName, assetBundleName);

            // 下载资源为空
            if (assetInfo.IsLoaded) // TODO 如果正在加载中怎么办???
            {
                if (loadedEvent != null)
                {
                    loadedEvent(assetInfo.AssetObjectCache);
                }
                return;
            }

            // 检测当前资源是否已处于下载中
            for (int i = 0; i < _loadingList.Count; ++i)
            {
                RequestAsset request = _loadingList[i];
                if (assetBundleName == null && request.AssetInfo.AssetBundleName == null)
                {
                    if (request.AssetInfo.AssetName.Equals(assetName))
                    {
                        request.LoadedEvent += loadedEvent;
                        return;
                    }
                }
                else if (request.AssetInfo.AssetBundleName != null)
                {
                    string key1 = request.AssetInfo.AssetName + "@" + request.AssetInfo.AssetBundleName;
                    string key2 = assetName + "@" + assetBundleName;
                    if (key1.Equals(key2))
                    {
                        request.LoadedEvent += loadedEvent;
                        return;
                    }
                }
            }

            // 检测当前资源是否处于等待下载中
            foreach (RequestAsset request in _waitLoads)
            {
                if (assetBundleName == null && request.AssetInfo.AssetBundleName == null)
                {
                    if (request.AssetInfo.AssetName.Equals(assetName))
                    {
                        request.LoadedEvent += loadedEvent;
                        return;
                    }
                }
                else if (request.AssetInfo.AssetBundleName != null)
                {
                    string key1 = request.AssetInfo.AssetName + "@" + request.AssetInfo.AssetBundleName;
                    string key2 = assetName + "@" + assetBundleName;
                    if (key1.Equals(key2))
                    {
                        request.LoadedEvent += loadedEvent;
                        return;
                    }
                }
            }

            // 创建新的异步资源下载请求,设置回调监听,并保存到等待下载队列
            {
                RequestAsset request = new RequestAsset();
                request.LoadedEvent += loadedEvent;
                request.AssetInfo    = assetInfo;
                request.AssetInfo.IsKeepInMemory = isKeepInMemory;
                _waitLoads.Enqueue(request);
            }
        }
Exemplo n.º 5
0
 void Start()
 {
     Task.Run(LoadAbilities).ContinueWith(result => LoadedEvent?.Invoke(abilities), TaskScheduler.FromCurrentSynchronizationContext());
 }