1

次のようなチェックを作成するにはどうすればよいですか... ドライブの種類のいずれか (または少なくとも 1 つ) が CDRom の場合、true/続行... そうでない場合は false (エラーをスロー)?

現在、CDRom の要件を満たしていないドライブ チェックごとにエラーをスローしています。Any() で LINQ クエリを使用する必要があると思いますが、エラーが発生し続けます。多分適当に書いてない。

私の計画は、次の場合にエラー メッセージをスローすることです。

・CDは入っていません

・パソコンにCD-ROMドライブがない

・入ったCDはブランク

-入力された CD には、必要な特定のファイルが含まれていません

これまでのところ、私が望むように機能しないものは次のとおりです。

DriveInfo[] allDrives = DriveInfo.GetDrives();

            foreach (DriveInfo d in allDrives)
            {
                Console.WriteLine("Drive {0}", d.Name);
                Console.WriteLine("  File type: {0}", d.DriveType);

                if (d.IsReady == true && d.DriveType == DriveType.CDRom)
                {
                    DirectoryInfo di = new DirectoryInfo(d.RootDirectory.Name);

                    var file = di.GetFiles("*.csv", SearchOption.AllDirectories).FirstOrDefault();

                    if (file == null)
                    {

                        errorwindow.Message = LanguageResources.Resource.File_Not_Found;
                        dialogService.ShowDialog(LanguageResources.Resource.Error, errorWindow);
                    }
                    else
                    {
                        foreach (FileInfo info in di.GetFiles("*.csv", SearchOption.AllDirectories))
                        {
                            Debug.Print(info.FullName);
                            ImportCSV(info.FullName);
                            break;      // only looking for the first one
                        }
                    }
                }
                else
                {
                    errorwindow.Message = LanguageResources.Resource.CDRom_Error;
                    dialogService.ShowDialog(LanguageResources.Resource.Error, errorWindow);
                }
            }

現在の問題は、最初に各ドライブを個別に設定するようにループが設定されていることです。CD-ROM ではないドライブを 1 回チェックすると、エラー メッセージがスローされ、ドライブごとにこれが実行されます。統一エラー メッセージが 1 つだけ必要です。

4

2 に答える 2