private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs ex)
        {
            string           path             = "";
            BackgroundWorker worker           = sender as BackgroundWorker;
            ProgressArgument progressArgument = new ProgressArgument();

            try
            {
                var options = new EnumerationOptions()
                {
                    IgnoreInaccessible    = true,
                    RecurseSubdirectories = true
                };

                DriveInfo[] allDrives = DriveInfo.GetDrives();
                int         count     = 1;
                foreach (var drive in allDrives)
                {
                    if (worker.CancellationPending)
                    {
                        ex.Cancel = true;
                        return;
                    }
                    progressArgument.count           = count;
                    progressArgument.allDrivesLength = allDrives.Length;
                    worker.ReportProgress(10, progressArgument);

                    string[] dirs = Directory.GetFiles(drive.Name, @"Among Us.exe", options);
                    if (dirs.Length > 0)
                    {
                        path      = dirs[0].Replace("\\Among Us.exe", "");
                        ex.Result = path;
                        return;
                    }
                    count++;
                }
            }
            catch (Exception e)
            {
                Logger.Log(null, e);
            }
        }
        private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            ProgressArgument progressArgument = (ProgressArgument)e.UserState;

            this.mainWindow.LabelProcessedDrives.Text = "Searching in drive " + progressArgument.count + " of " + progressArgument.allDrivesLength;
        }