Streamwriter хвърля system.argumentexception

Знам, че този въпрос изглежда странен.

Използвам .NET Micro Framework, за да напиша малка програма на C#, която използва емулатора по подразбиране, за да емулира светкавица, използвайки 5 бутона на емулатора, използвайки interruptport за генериране на събития.

Кодирах така, че когато натисна долния бутон, всички записи, съхранени в arraylist usagelog, ще бъдат отпечатани в txt файл. Много просто и ясно, направих екземпляр на Streamwriter

StreamWriter sw = new StreamWriter(@"c:\temp.txt");

Но след това извежда „Необработено изключение от тип „System.ArgumentException“ възникна в System.IO.dll“ на този ред.

Не мога да поправя това и не мога да разбера защо тук има изключение за аргумент. Кодът работи добре за конзолен проект във Visual C#, но не в Micro Framework.


person Nguyen Le Bang Linh    schedule 10.01.2013    source източник
comment
Хванете изключението и покажете ex.ToString() и може да имате голяма представа.   -  person John Saunders    schedule 10.01.2013
comment
това е всичко, което казва Възникна необработено изключение от тип „System.ArgumentException“ в System.IO.dll. когато ex.ToString() казва System.Argumentexception   -  person Nguyen Le Bang Linh    schedule 10.01.2013
comment
След това проверете вътрешното изключение. В този случай трябва да има едно - еднакво лечение. Докато стигнете до дъното.   -  person TomTom    schedule 10.01.2013
comment
Шийш. Какво стана с идеята да бъдеш добър! blog.stackoverflow.com/2012/07/kicking-off-the-summer -на-любов   -  person David    schedule 10.01.2013
comment
MSDN заявява, че ArgumentException се хвърля само в конструктора, който използвате, ако: 1) низът е празен или 2) низът сочи към нефайлов ресурс. Може би емулаторът приема #2?   -  person Simon Whitehead    schedule 10.01.2013


Отговори (1)


Проблемът, който имате, е защото файловата система е различна между Windows и MicroFramework. Успях да го накарам да работи на емулатора, като използвах някои функции на директория, за да определя наличните директории.

public static void Main()
{
    string  d = Directory.GetCurrentDirectory();
    string[] directorys = Directory.GetDirectories(d);
    foreach (var item in directorys )
    {
        Debug.Print(item);
    }

    try
    {
        using (StreamWriter sw = new StreamWriter("\\WINFS\\temp.txt"))
        {
            sw.WriteLine("Good Evening");
            sw.Close();
        }
    }
    catch (Exception ex)
    {
        throw ex;
    }

}

В емулатора, който измислих

 [0]: "\\ROOT"
 [1]: "\\WINFS"

ROOT не работи, но WINFS работи.

person Mark Hall    schedule 10.01.2013