public async Task <string> GetDocumentWindowPositionsAsync() { using (var stream = new VsOleStream()) { await _package.JoinableTaskFactory.SwitchToMainThreadAsync(); var result = _vsDocumentWindowMgr.SaveDocumentWindowPositions(0, stream); if (result != VSConstants.S_OK) { return(null); } stream.Seek(0, SeekOrigin.Begin); return(Convert.ToBase64String(stream.ToArray())); } }
public async Task <bool> RestoreDocumentWindowsAsync(string positions) { using (var stream = new VsOleStream()) { var bytes = Convert.FromBase64String(positions); await stream.WriteAsync(bytes, 0, bytes.Length); stream.Seek(0, SeekOrigin.Begin); await _package.JoinableTaskFactory.SwitchToMainThreadAsync(); var hr = _vsDocumentWindowMgr.ReopenDocumentWindows(stream); if (hr != VSConstants.S_OK) { return(false); } return(true); } }