Aha!

That must be where I picked it up from.

http://www.codeproject.com/KB/database/CsvReader.aspx

using System.IO;
using LumenWorks.Framework.IO.Csv;

void ReadCsv()
{
    // open the file "data.csv" which is a CSV file with headers
    using (CsvReader csv =
           new CsvReader(new StreamReader("data.csv"), true)) // 
<<=================== *
    {
        int fieldCount = csv.FieldCount;
        string[] headers = csv.GetFieldHeaders();

        while (csv.ReadNextRecord())
        {
            for (int i = 0; i < fieldCount; i++)
                Console.Write(string.Format("{0} = {1};",
                              headers[i], csv[i]));

            Console.WriteLine();
        }
    }
}

You are right, I should have looked at his source code. In disposing of the 
CsvReader instance, the author would have disposed of any supplied stream 
object. However I was tearing my hair out (which is difficult considering the 
paucity of it on my scalp) trying to find out why my application was hanging. 
Lost a day and half on this before I discovered it was a commercial security 
product silently pushed out to all workstations that was the alleged cause 
(uninstalling it fixed the problem). I believed a support task has now been 
submitted.

Regards Peter Maddin
Applications Development Officer
PathWest Laboratory Medicine WA
Phone : +618 9473 3944
Fax : +618 9473 3982
E-Mail : [email protected]
The contents of this e-mail transmission outside of the WAGHS network are 
intended solely for the named recipient's), may be confidential, and may be 
privileged or otherwise protected from disclosure in the public interest. The 
use, reproduction, disclosure or distribution of the contents of this e-mail 
transmission by any person other than the named recipient(s) is prohibited. If 
you are not a named recipient please notify the sender immediately.





-----Original Message-----
From: [email protected] [mailto:[email protected]] On 
Behalf Of Sam Lai
Sent: Wednesday, 19 May 2010 8:31 AM
To: ozDotNet
Subject: Re: DriveInfo.GetDrives() not returning

Inline.

On 18 May 2010 16:13, Maddin, Peter <[email protected]> wrote:
<snip>
> I just noticed they had (although they might deny it now that I have been 
> working on it).
>
>                originalFileName = String.Empty;
>                using (var csv = new CsvReader(new StreamReader(fileName), 
> true, Delimitor))
>                {
>
> That does not look right. The filestream will never be closed (at least I 
> don't think so)

It should be if CsvReader is based on the TextReader family of classes
(CsvReader doesn't seem to be a class in the BCL). I'm assuming this
given the naming scheme.

Actually, just found the what I think is the CsvReader class being
used [1]. Given he claims it follows StreamReader's design closely,
I'd say that line of code will be fine because StreamReader (actually,
the abstract base class TextReader) dictates that calling close()
"Closes the StreamReader object *and the underlying stream*, and
releases any system resources associated with the reader." [2]
(emphasis mine)

I'd take a look at the source code, but cbf signing up at CodeProject.
Also, he uses that using statement in his examples :)

[1] - http://www.codeproject.com/KB/database/CsvReader.aspx
[2] - 
http://msdn.microsoft.com/en-us/library/system.io.streamreader.close(v=VS.100).aspx

> I have changed this to
>
>            originalFileName = String.Empty;
>            // open the file. It is expected to be a CSV file with headers
>            using (var sr = new StreamReader(fileName))
>            {
>                using (var csv = new CsvReader(sr, true, Delimitor))
>                {
>
> I will try this out after another reboot.
>
> I will also try out the Directory.GetLogicalDrives();
> If the above does not achieve anything.
>
>
> Regards Peter Maddin
> Applications Development Officer
> PathWest Laboratory Medicine WA
> Phone : +618 9473 3944
> Fax : +618 9473 3982
> E-Mail : [email protected]
> The contents of this e-mail transmission outside of the WAGHS network are 
> intended solely for the named recipient's), may be confidential, and may be 
> privileged or otherwise protected from disclosure in the public interest. The 
> use, reproduction, disclosure or distribution of the contents of this e-mail 
> transmission by any person other than the named recipient(s) is prohibited. 
> If you are not a named recipient please notify the sender immediately.
>
>
>
>
> -----Original Message-----
> From: [email protected] [mailto:[email protected]] On 
> Behalf Of silky
> Sent: Tuesday, 18 May 2010 1:26 PM
> To: ozDotNet
> Subject: Re: DriveInfo.GetDrives() not returning
>
> On Tue, May 18, 2010 at 1:53 PM, Maddin, Peter
> <[email protected]> wrote:
>
> [...]
>
>> I am targeting .NET 3.5. Is it a framework problem, driver problem, some
>> other problem?
>>
>> Could it just be the machine I am using?
>
> I know its boring but can you reproduce it in a stand-alone app? (not
> part of your main one?)
>
> My guess would be you're somehow in a lock with yourself.
>
>
>> Regards Peter Maddin
>> Applications Development Officer
>> PathWest Laboratory Medicine WA
>> Phone : +618 9473 3944
>> Fax : +618 9473 3982
>> E-Mail : [email protected]
>> The contents of this e-mail transmission outside of the WAGHS network are
>> intended solely for the named recipient's), may be confidential, and may be
>> privileged or otherwise protected from disclosure in the public interest.
>> The use, reproduction, disclosure or distribution of the contents of this
>> e-mail transmission by any person other than the named recipient(s) is
>> prohibited. If you are not a named recipient please notify the sender
>> immediately.
>
> --
> silky
>
>  http://www.programmingbranch.com/
>

Reply via email to