public static void Run() { //ExStart: AbortPSTToExchangeServerOperation using (IEWSClient client = EWSClient.GetEWSClient("https://exchange.office365.com/ews/exchange.asmx", "username", "password")) { DateTime startTime = DateTime.Now; TimeSpan maxRestoreTime = TimeSpan.FromSeconds(15); int processedItems = 0; BeforeItemCallback callback = delegate { if (DateTime.Now >= startTime.Add(maxRestoreTime)) { throw new CustomAbortRestoreException(); } processedItems++; }; try { //create a test pst and add some test messages to it var pst = PersonalStorage.Create(new MemoryStream(), FileFormatVersion.Unicode); var folder = pst.RootFolder.AddSubFolder("My test folder"); for (int i = 0; i < 20; i++) { var message = new MapiMessage("*****@*****.**", "*****@*****.**", "subj", new string('a', 10000)); folder.AddMessage(message); } //now restore the PST with callback client.Restore(pst, new Aspose.Email.Clients.Exchange.WebService.RestoreSettings { BeforeItemCallback = callback }); Console.WriteLine("Success!"); } catch (CustomAbortRestoreException) { Console.WriteLine($"Timeout! {processedItems}"); } //ExEnd: AbortPSTToExchangeServerOperation } }