C# - 驱动器未就绪(DriveInfo)

时间:2012-08-07 08:48:01

标签: c# sql driveinfo

我对DriveInfo类有这个小问题。 我知道错误是特定于“IsReady”属性但我只是不知道如何定义它..

namespace Csp.Test.ConsoleApp
{
    public class Program
    {
        public static void Main()
        {
            //Create the server object - You will need create a list of the server objects.
            Server server = new Server();

            //Get all drives information
            List<DriveInfo> driveList = DriveInfo.GetDrives().ToList<DriveInfo>();

            //Insert information of one server - You will need get information of all servers
            server.ServerID = 0; //Here is necessery put PK key. I recommend doing the SQL server will automatically generate the PK.
            server.ServerName = string.Concat("Server ", driveList.Count);

            //Inserts information in the newServers object
            for (int i = 0; i < driveList.Count; i++)
            {
                ServerDrive serverDrives = new ServerDrive();

                //Put here all the information to obeject Server                
                serverDrives.DriveLabel = driveList[i].Name;
                serverDrives.TotalSpace = driveList[i].TotalSize;
                serverDrives.DriveLetter = driveList[i].VolumeLabel;
                serverDrives.FreeSpace = driveList[i].TotalFreeSpace;

                //      server.ListServerDrives.Add(serverDrives);
                server.ServerDrives.Add(serverDrives);
            }

            //Add the information to an SQL Database using Linq.
            DataClasses1DataContext db = new DataClasses1DataContext(@"sqlserver");
            //   db.Servers.InsertAllOnSubmit(server);
            db.Servers.InsertOnSubmit(server);
            db.SubmitChanges();
        }

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

更改以下行:

List<DriveInfo> driveList = DriveInfo.GetDrives().Where(x=>x.IsReady).ToList();

请注意,如果驱动器状态在获取驱动器列表和查询DriveInfo之间发生变化,您仍然可以获得IOException,因此最好在访问DriveInfo时使用try-catch。