示例#1
0
        public void Dispose()
        {
            _worker.Dispose();
            _worker = null;

            var synchronizer = _container.Resolve <IUISynchronizer>();

            synchronizer.RunSync(() => _memoryReader.Dispose());

            _memoryReader = null;
            _container    = null;
        }
示例#2
0
        public FFXIVMemoryManager(IDIContext container)
        {
            _container = container ?? throw new ArgumentNullException(nameof(container));
            _worker    = new IndependendBackgroundWorker();

            var sharlayanResourceFolder = System.IO.Path.Combine(GobchatContext.ResourceLocation, @"sharlayan");

            System.IO.Directory.CreateDirectory(sharlayanResourceFolder);

            //needs to be done on the same thread as dispose, anchore it to ui thread, because that one never changes
            var synchronizer = container.Resolve <IUISynchronizer>();

            _memoryReader = synchronizer.RunSync(() => new FFXIVMemoryReader());
            _memoryReader.LocalCacheDirectory = sharlayanResourceFolder;
            _memoryReader.Initialize();

            _memoryReader.OnProcessChanged     += MemoryReader_OnProcessChanged;
            _memoryReader.OnWindowFocusChanged += MemoryReader_OnWindowFocusChanged;
            _worker.Start(Task_ConnectMemoryReader);
        }