Как я определяю, брошен ли IOException из-за ошибки совместного доступа?

Почему бы не использовать словарь?

using System.Collections.Generic;

private Dictionary<bool, string> abc(string a, string b) {
    //...

    Dictionary<bool, string> returnVal = new new Dictionary<bool, string>()
    {
        {"success", false},
        {"responseText", "Input-Values not valid"},
    };

    return returnVal;
}

А затем, чтобы получить доступ к возвращаемому значению, вы должны сделать: returnVal["success"]

8
задан Kev 8 January 2009 в 21:10
поделиться

3 ответа

Эта статья объясняет, как получить исключение HRESULT, таким образом, можно определить ошибочную причину.

5
ответ дан 5 December 2019 в 13:02
поделиться

Это было решением, которое я предложил.

private void RobustMoveFile( System.IO.DirectoryInfo destinationDirectory, System.IO.FileInfo sourceFile, Boolean retryMove )
                {
                    try
                    {
                        string DestinationFile = Path.Combine( destinationDirectory.FullName, sourceFile.Name );
                        if ( File.Exists( DestinationFile ) )
                            sourceFile.Replace( DestinationFile, DestinationFile + "Back", true );
                        else
                        {
                            sourceFile.CopyTo( DestinationFile, true );
                            sourceFile.Delete();
                        }
                    }
                    catch ( System.IO.IOException IOEx )
                    {
                        int HResult = System.Runtime.InteropServices.Marshal.GetHRForException( IOEx );        
                        const int SharingViolation = 32;
                        if ( ( HResult & 0xFFFF ) == SharingViolation && retryMove )
                            RobustMoveFile( destinationDirectory, sourceFile, false );
                        throw;
                    }
                }
8
ответ дан 5 December 2019 в 13:02
поделиться

Ищите явные коды ошибок, что можно иметь дело с, например:

выгода (Исключение u) {если (((SocketException) u).ErrorCode == 10035)...

Смотрите здесь: http://msdn.microsoft.com/en-us/library/ms681391 (По сравнению с 85) .aspx

для кодов ошибок, например:

ERROR_SHARING_VIOLATION - 32 - 0x20

ERROR_ACCESS_DENIED = 5 - 0x5

ERROR_FILE_NOT_FOUND - 2 - 0x2

-2
ответ дан 5 December 2019 в 13:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: