lucenenet-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Maximilian Haru Raditya (JIRA)" <>
Subject [jira] [Created] (LUCENENET-511) ObjectDisposedException thrown when IndexWriter disposed by finalizer
Date Mon, 01 Oct 2012 22:41:09 GMT
Maximilian Haru Raditya created LUCENENET-511:

             Summary: ObjectDisposedException thrown when IndexWriter disposed by finalizer
                 Key: LUCENENET-511
             Project: Lucene.Net
          Issue Type: Bug
          Components: Lucene.Net Core
    Affects Versions: Lucene.Net 3.0.3
         Environment: Windows 7 x64, .NET Framework 4.5
            Reporter: Maximilian Haru Raditya

I'm having an issue of ObjectDisposedException with an error message "Cannot access a closed
file." when working IndexWriter.

I manage to reproduce it when I create a new WPF (4.5) app and install 3.0.3-RC2 from NuGet.
I then create a LuceneManager which implements IDisposable, and I create a finalizer for it.
I wrap IndexWriter inside it, and dispose it inside Dispose(bool). The implementation code
looks like this:

namespace WpfApplication
    using System;
    using System.Collections.Generic;
    using System.IO;

    using Lucene.Net.Analysis.Standard;
    using Lucene.Net.Index;
    using Lucene.Net.Store;

    using Version = Lucene.Net.Util.Version;

    public class LuceneManager : IDisposable
        public static readonly string IndexPath =
            Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Index");

        private IndexWriter _indexWriter;

        private bool _isDisposed;

        public LuceneManager()
            var directory = FSDirectory.Open(IndexPath);
            var analyzer = new StandardAnalyzer(Version.LUCENE_30, new HashSet<string>());
            this._indexWriter = new IndexWriter(directory, analyzer, IndexWriter.MaxFieldLength.UNLIMITED);


        public void Dispose()

        private void Dispose(bool isDisposing)
            if (!this._isDisposed)
                if (this._indexWriter != null)
                this._indexWriter = null;

                this._isDisposed = true;

And the calling code looks like this:

namespace WpfApplication
    using System.Windows;

    public partial class MainWindow : Window
        public MainWindow()

        private void OnLoaded(object sender, RoutedEventArgs e)
            var lucenceManager = new LuceneManager();

The app run just fine until I close it and it throws ObjectDisposedException as described

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:

View raw message