示例#1
0
        private async void StartFormatsDownload(object control, RoutedEventArgs e)
        {
            var dialog = m_dialog;

            try
            {
                dialog.FormatsDownload.IsEnabled = false;
                var app_data_folder = m_main.App.GetLocalAppDataFolder();
                Directory.CreateDirectory(app_data_folder);
                using (var client = new WebClientEx())
                    using (var tmp_file = new GARbro.Shell.TemporaryFile(app_data_folder, Path.GetRandomFileName()))
                    {
                        client.Timeout = RequestTimeout;
                        await client.DownloadFileTaskAsync(m_formats_url, tmp_file.Name);

                        m_main.App.DeserializeScheme(tmp_file.Name);
                        var local_formats_dat = Path.Combine(app_data_folder, App.FormatsDat);
                        if (!GARbro.Shell.File.Rename(tmp_file.Name, local_formats_dat))
                        {
                            throw new Win32Exception(GARbro.Shell.File.GetLastError());
                        }
                    }
                SetFormatsUpdateStatus(dialog, guiStrings.MsgUpdateComplete);
            }
            catch (Exception X)
            {
                SetFormatsUpdateStatus(dialog, guiStrings.MsgDownloadFailed, X.Message);
            }
            finally
            {
                dialog.FormatsDownload.Visibility = Visibility.Hidden;
            }
        }
示例#2
0
 void CreateWorker(object sender, DoWorkEventArgs e)
 {
     m_pending_error = null;
     try
     {
         using (var tmp_file = new GARbro.Shell.TemporaryFile(Path.GetDirectoryName(m_arc_name),
                                                              Path.GetRandomFileName()))
         {
             m_total = m_file_list.Count() + 1;
             using (var file = File.Create(tmp_file.Name))
             {
                 m_format.Create(file, m_file_list, m_options, CreateEntryCallback);
             }
             if (!GARbro.Shell.File.Rename(tmp_file.Name, m_arc_name))
             {
                 throw new Win32Exception(GARbro.Shell.File.GetLastError());
             }
         }
     }
     catch (Exception X)
     {
         m_pending_error = X;
     }
 }
示例#3
0
 void CreateWorker(object sender, DoWorkEventArgs e)
 {
     m_pending_error = null;
     try
     {
         using (var tmp_file = new GARbro.Shell.TemporaryFile (Path.GetDirectoryName (m_arc_name),
                                                             Path.GetRandomFileName ()))
         {
             m_total = m_file_list.Count() + 1;
             using (var file = File.Create (tmp_file.Name))
             {
                 m_format.Create (file, m_file_list, m_options, CreateEntryCallback);
             }
             if (!GARbro.Shell.File.Rename (tmp_file.Name, m_arc_name))
             {
                 throw new Win32Exception (GARbro.Shell.File.GetLastError());
             }
         }
     }
     catch (Exception X)
     {
         m_pending_error = X;
     }
 }