Click here to Skip to main content
15,886,362 members
Home / Discussions / C#
   

C#

 
GeneralRe: DataGridView Calculated Column update when move to new row C# Pin
ahmed_one24-Dec-13 21:27
ahmed_one24-Dec-13 21:27 
QuestionMaintainScrollPositionOnPostback on UpdatePanel Pin
vkEE23-Dec-13 9:28
vkEE23-Dec-13 9:28 
Questionthe name does not exist in the current context Pin
Member 996531123-Dec-13 9:03
Member 996531123-Dec-13 9:03 
QuestionRe: the name does not exist in the current context Pin
Brisingr Aerowing23-Dec-13 10:02
professionalBrisingr Aerowing23-Dec-13 10:02 
AnswerRe: the name does not exist in the current context Pin
Member 996531123-Dec-13 10:36
Member 996531123-Dec-13 10:36 
GeneralRe: the name does not exist in the current context Pin
Brisingr Aerowing24-Dec-13 12:27
professionalBrisingr Aerowing24-Dec-13 12:27 
QuestionHow to use Oracle SQLLDR to upload Text file data through C# Pin
Daljit S. Gill22-Dec-13 23:12
Daljit S. Gill22-Dec-13 23:12 
QuestionLarge text file(1.5 gb) reading using Background worker Pin
Arjun Mourya22-Dec-13 22:56
Arjun Mourya22-Dec-13 22:56 
Hi,

I have written the below code to read a larege text (1.5 gb) using background worker thread. Also I have used StreamReader.ReadLine() method.

But I am receiving OutOfMemoryException(I have mentioned where I am receiving the exception in code as comments).

Is there any any way to read data from large text file?

C#
const string dataFile = @"D:\\test.txt";
        string line;
        public Form1()
        {
            InitializeComponent();
            InitializeBackgroundWorker();
        }

        private void InitializeBackgroundWorker()
        {
            backgroundWorker1.DoWork +=
                new DoWorkEventHandler(backgroundWorker1_DoWork);
            backgroundWorker1.RunWorkerCompleted +=
                new RunWorkerCompletedEventHandler(
            backgroundWorker1_RunWorkerCompleted);
            backgroundWorker1.ProgressChanged +=
                new ProgressChangedEventHandler(
            backgroundWorker1_ProgressChanged_1);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            
            backgroundWorker1.RunWorkerAsync();//300 gives a total of 3 seconds pause
        }

        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            StringBuilder sb = new StringBuilder();
            
            using (FileStream fs = File.Open(dataFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
            using (BufferedStream bs = new BufferedStream(fs))
            using (StreamReader sr = new StreamReader(bs))
            {

                while ((line = sr.ReadLine()) != null)//Exception of type 'System.OutOfMemoryException' was thrown."
                {
                    if (backgroundWorker1.CancellationPending)//checks for cancel request
                    {
                        e.Cancel = true;
                        break;
                    }

                    
                    sb.AppendLine(line + "\n");
                    e.Result = sb;

                }
            }
                
	           
        }

        

        private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
	        {
	            if (e.Cancelled)//it doesn't matter if the BG worker ends normally, or gets cancelled,
	            {              //both cases RunWorkerCompleted is invoked, so we need to check what has happened
	                MessageBox.Show("You've cancelled the backgroundworker!");
	 
	            }
	            else
	            {
	               
                    richTextBox1.AppendText(e.Result.ToString());
	                MessageBox.Show("Done");
                   
	            }
	        }
        private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
	        {
	            progressBar1.Value = e.ProgressPercentage;
	        }

        private void backgroundWorker1_ProgressChanged_1(object sender, ProgressChangedEventArgs e)
        {
            //progressBar1.Value = e.ProgressPercentage;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            backgroundWorker1.CancelAsync();//makes the backgroundworker stop
        }

AnswerRe: Large text file(1.5 gb) reading using Background worker Pin
BillWoodruff23-Dec-13 0:08
professionalBillWoodruff23-Dec-13 0:08 
GeneralRe: Large text file(1.5 gb) reading using Background worker Pin
Arjun Mourya23-Dec-13 3:05
Arjun Mourya23-Dec-13 3:05 
GeneralRe: Large text file(1.5 gb) reading using Background worker Pin
Member 996531123-Dec-13 10:41
Member 996531123-Dec-13 10:41 
AnswerRe: Large text file(1.5 gb) reading using Background worker Pin
Manfred Rudolf Bihy23-Dec-13 0:49
professionalManfred Rudolf Bihy23-Dec-13 0:49 
GeneralRe: Large text file(1.5 gb) reading using Background worker Pin
Arjun Mourya23-Dec-13 2:57
Arjun Mourya23-Dec-13 2:57 
GeneralRe: Large text file(1.5 gb) reading using Background worker Pin
Eddy Vluggen23-Dec-13 7:25
professionalEddy Vluggen23-Dec-13 7:25 
GeneralRe: Large text file(1.5 gb) reading using Background worker Pin
Arjun Mourya24-Dec-13 0:10
Arjun Mourya24-Dec-13 0:10 
AnswerRe: Large text file(1.5 gb) reading using Background worker Pin
OriginalGriff23-Dec-13 1:06
mveOriginalGriff23-Dec-13 1:06 
GeneralRe: Large text file(1.5 gb) reading using Background worker Pin
Arjun Mourya23-Dec-13 2:50
Arjun Mourya23-Dec-13 2:50 
GeneralRe: Large text file(1.5 gb) reading using Background worker Pin
OriginalGriff23-Dec-13 3:29
mveOriginalGriff23-Dec-13 3:29 
GeneralRe: Large text file(1.5 gb) reading using Background worker Pin
Arjun Mourya23-Dec-13 4:05
Arjun Mourya23-Dec-13 4:05 
GeneralRe: Large text file(1.5 gb) reading using Background worker Pin
OriginalGriff23-Dec-13 4:12
mveOriginalGriff23-Dec-13 4:12 
QuestionRe: Large text file(1.5 gb) reading using Background worker Pin
Sampath Sridhar23-Dec-13 21:48
Sampath Sridhar23-Dec-13 21:48 
AnswerRe: Large text file(1.5 gb) reading using Background worker Pin
OriginalGriff24-Dec-13 0:58
mveOriginalGriff24-Dec-13 0:58 
GeneralRe: Large text file(1.5 gb) reading using Background worker Pin
Arjun Mourya24-Dec-13 2:07
Arjun Mourya24-Dec-13 2:07 
GeneralRe: Large text file(1.5 gb) reading using Background worker Pin
Sampath Sridhar24-Dec-13 6:32
Sampath Sridhar24-Dec-13 6:32 
GeneralRe: Large text file(1.5 gb) reading using Background worker Pin
OriginalGriff24-Dec-13 7:35
mveOriginalGriff24-Dec-13 7:35 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.