﻿<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
  
  <head>
<link rel="canonical" href="https://ignite.apache.org/releases/latest/dotnetdoc/api/Apache.Ignite.Core.Cache.Query.Continuous.ContinuousQuery-2.html" />
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>Class ContinuousQuery&lt;TK, TV&gt;
   | Apache Ignite.NET </title>
    <meta name="viewport" content="width=device-width">
    <meta name="title" content="Class ContinuousQuery&lt;TK, TV&gt;
   | Apache Ignite.NET ">
    <meta name="generator" content="docfx 2.24.0.0">
    
    <link rel="shortcut icon" href="../images/favicon.ico">
    <link rel="stylesheet" href="../styles/docfx.vendor.css">
    <link rel="stylesheet" href="../styles/docfx.css">
    <link rel="stylesheet" href="../styles/main.css">
    <meta property="docfx:navrel" content="../toc.html">
    <meta property="docfx:tocrel" content="toc.html">
    
    <meta property="docfx:rel" content="../">
    
  
<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-61232409-1', 'auto');
  ga('send', 'pageview');

</script></head>
  <body data-spy="scroll" data-target="#affix">
    <div id="wrapper">
      <header>
        
        <nav id="autocollapse" class="navbar navbar-inverse ng-scope" role="navigation">
          <div class="container">
            <div class="navbar-header">
              <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
              </button>
              
              <a class="navbar-brand" href="../index.html">
                <img id="logo" class="svg" src="../images/logo_ignite_32_32.png" alt="">
              </a>
            </div>
            <div class="collapse navbar-collapse" id="navbar">
              <form class="navbar-form navbar-right" role="search" id="search">
                <div class="form-group">
                  <input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
                </div>
              </form>
            </div>
          </div>
        </nav>
        
        <div class="subnav navbar navbar-default">
          <div class="container hide-when-search" id="breadcrumb">
            <ul class="breadcrumb">
              <li></li>
            </ul>
          </div>
        </div>
      </header>
      <div class="container body-content">
        
        <div id="search-results">
          <div class="search-list"></div>
          <div class="sr-items"></div>
          <ul id="pagination"></ul>
        </div>
      </div>
      <div role="main" class="container body-content hide-when-search">
        
        <div class="sidenav hide-when-search">
          <a class="btn toc-toggle collapse" data-toggle="collapse" href="#sidetoggle" aria-expanded="false" aria-controls="sidetoggle">Show / Hide Table of Contents</a>
          <div class="sidetoggle collapse" id="sidetoggle">
            <div id="sidetoc"></div>
          </div>
        </div>
        <div class="article row grid-right">
          <div class="col-md-10">
            <article class="content wrap" id="_content" data-uid="Apache.Ignite.Core.Cache.Query.Continuous.ContinuousQuery`2">
  
  
  <h1 id="Apache_Ignite_Core_Cache_Query_Continuous_ContinuousQuery_2" data-uid="Apache.Ignite.Core.Cache.Query.Continuous.ContinuousQuery`2" class="text-break">Class ContinuousQuery&lt;TK, TV&gt;
  </h1>
  <div class="markdown level0 summary"><p>API for configuring continuous cache queries.
<p>
Continuous queries allow to register a remote and a listener for cache update events. 
If an update event passes the filter, it will be sent to the node that executed the 
query and listener will be notified on that node.
<p>
Continuous query can either be executed on the whole topology or only on local node.
<p>
In case query is distributed and a new node joins, it will get the filter for the query 
during discovery process before it actually joins topology, so no updates will be missed.
<p>
To execute the query use method 
<a class="xref" href="Apache.Ignite.Core.Cache.ICache-2.html#Apache_Ignite_Core_Cache_ICache_2_QueryContinuous_Apache_Ignite_Core_Cache_Query_Continuous_ContinuousQuery__0__1__">QueryContinuous(ContinuousQuery&lt;TK, TV&gt;)</a>.</p>
</div>
  <div class="markdown level0 conceptual"></div>
  <div class="inheritance">
    <h5>Inheritance</h5>
    <div class="level0"><span class="xref">System.Object</span></div>
    <div class="level1"><a class="xref" href="Apache.Ignite.Core.Cache.Query.Continuous.ContinuousQuery.html">ContinuousQuery</a></div>
    <div class="level2"><span class="xref">ContinuousQuery&lt;TK, TV&gt;</span></div>
  </div>
  <div class="inheritedMembers">
    <h5>Inherited Members</h5>
    <div>
      <a class="xref" href="Apache.Ignite.Core.Cache.Query.Continuous.ContinuousQuery.html#Apache_Ignite_Core_Cache_Query_Continuous_ContinuousQuery_DefaultBufferSize">ContinuousQuery.DefaultBufferSize</a>
    </div>
    <div>
      <a class="xref" href="Apache.Ignite.Core.Cache.Query.Continuous.ContinuousQuery.html#Apache_Ignite_Core_Cache_Query_Continuous_ContinuousQuery_DefaultTimeInterval">ContinuousQuery.DefaultTimeInterval</a>
    </div>
    <div>
      <a class="xref" href="Apache.Ignite.Core.Cache.Query.Continuous.ContinuousQuery.html#Apache_Ignite_Core_Cache_Query_Continuous_ContinuousQuery_DefaultAutoUnsubscribe">ContinuousQuery.DefaultAutoUnsubscribe</a>
    </div>
    <div>
      <span class="xref">System.Object.ToString()</span>
    </div>
    <div>
      <span class="xref">System.Object.Equals(System.Object)</span>
    </div>
    <div>
      <span class="xref">System.Object.Equals(System.Object, System.Object)</span>
    </div>
    <div>
      <span class="xref">System.Object.ReferenceEquals(System.Object, System.Object)</span>
    </div>
    <div>
      <span class="xref">System.Object.GetHashCode()</span>
    </div>
    <div>
      <span class="xref">System.Object.GetType()</span>
    </div>
    <div>
      <span class="xref">System.Object.MemberwiseClone()</span>
    </div>
  </div>
  <h6><strong>Namespace</strong>: <a class="xref" href="Apache.Ignite.Core.Cache.Query.Continuous.html">Apache.Ignite.Core.Cache.Query.Continuous</a></h6>
  <h6><strong>Assembly</strong>: Apache.Ignite.Core.dll</h6>
  <h5 id="Apache_Ignite_Core_Cache_Query_Continuous_ContinuousQuery_2_syntax">Syntax</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public class ContinuousQuery&lt;TK, TV&gt; : ContinuousQuery</code></pre>
  </div>
  <h5 class="typeParameters">Type Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="parametername">TK</span></td>
        <td></td>
      </tr>
      <tr>
        <td><span class="parametername">TV</span></td>
        <td></td>
      </tr>
    </tbody>
  </table>
  <h3 id="constructors">Constructors
  </h3>
  <a id="Apache_Ignite_Core_Cache_Query_Continuous_ContinuousQuery_2__ctor_" data-uid="Apache.Ignite.Core.Cache.Query.Continuous.ContinuousQuery`2.#ctor*"></a>
  <h4 id="Apache_Ignite_Core_Cache_Query_Continuous_ContinuousQuery_2__ctor_Apache_Ignite_Core_Cache_Event_ICacheEntryEventListener__0__1__" data-uid="Apache.Ignite.Core.Cache.Query.Continuous.ContinuousQuery`2.#ctor(Apache.Ignite.Core.Cache.Event.ICacheEntryEventListener{`0,`1})">ContinuousQuery(ICacheEntryEventListener&lt;TK, TV&gt;)</h4>
  <div class="markdown level1 summary"><p>Constructor.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public ContinuousQuery(ICacheEntryEventListener&lt;TK, TV&gt; lsnr)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Cache.Event.ICacheEntryEventListener-2.html">ICacheEntryEventListener</a>&lt;TK, TV&gt;</td>
        <td><span class="parametername">lsnr</span></td>
        <td><p>Listener.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Cache_Query_Continuous_ContinuousQuery_2__ctor_" data-uid="Apache.Ignite.Core.Cache.Query.Continuous.ContinuousQuery`2.#ctor*"></a>
  <h4 id="Apache_Ignite_Core_Cache_Query_Continuous_ContinuousQuery_2__ctor_Apache_Ignite_Core_Cache_Event_ICacheEntryEventListener__0__1__Apache_Ignite_Core_Cache_Event_ICacheEntryEventFilter__0__1__" data-uid="Apache.Ignite.Core.Cache.Query.Continuous.ContinuousQuery`2.#ctor(Apache.Ignite.Core.Cache.Event.ICacheEntryEventListener{`0,`1},Apache.Ignite.Core.Cache.Event.ICacheEntryEventFilter{`0,`1})">ContinuousQuery(ICacheEntryEventListener&lt;TK, TV&gt;, ICacheEntryEventFilter&lt;TK, TV&gt;)</h4>
  <div class="markdown level1 summary"><p>Constructor.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public ContinuousQuery(ICacheEntryEventListener&lt;TK, TV&gt; lsnr, ICacheEntryEventFilter&lt;TK, TV&gt; filter)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Cache.Event.ICacheEntryEventListener-2.html">ICacheEntryEventListener</a>&lt;TK, TV&gt;</td>
        <td><span class="parametername">lsnr</span></td>
        <td><p>Listener.</p>
</td>
      </tr>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Cache.Event.ICacheEntryEventFilter-2.html">ICacheEntryEventFilter</a>&lt;TK, TV&gt;</td>
        <td><span class="parametername">filter</span></td>
        <td><p>Filter.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Cache_Query_Continuous_ContinuousQuery_2__ctor_" data-uid="Apache.Ignite.Core.Cache.Query.Continuous.ContinuousQuery`2.#ctor*"></a>
  <h4 id="Apache_Ignite_Core_Cache_Query_Continuous_ContinuousQuery_2__ctor_Apache_Ignite_Core_Cache_Event_ICacheEntryEventListener__0__1__Apache_Ignite_Core_Cache_Event_ICacheEntryEventFilter__0__1__System_Boolean_" data-uid="Apache.Ignite.Core.Cache.Query.Continuous.ContinuousQuery`2.#ctor(Apache.Ignite.Core.Cache.Event.ICacheEntryEventListener{`0,`1},Apache.Ignite.Core.Cache.Event.ICacheEntryEventFilter{`0,`1},System.Boolean)">ContinuousQuery(ICacheEntryEventListener&lt;TK, TV&gt;, ICacheEntryEventFilter&lt;TK, TV&gt;, Boolean)</h4>
  <div class="markdown level1 summary"><p>Constructor.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public ContinuousQuery(ICacheEntryEventListener&lt;TK, TV&gt; lsnr, ICacheEntryEventFilter&lt;TK, TV&gt; filter, bool loc)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Cache.Event.ICacheEntryEventListener-2.html">ICacheEntryEventListener</a>&lt;TK, TV&gt;</td>
        <td><span class="parametername">lsnr</span></td>
        <td><p>Listener.</p>
</td>
      </tr>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Cache.Event.ICacheEntryEventFilter-2.html">ICacheEntryEventFilter</a>&lt;TK, TV&gt;</td>
        <td><span class="parametername">filter</span></td>
        <td><p>Filter.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">loc</span></td>
        <td><p>Whether query should be executed locally.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Cache_Query_Continuous_ContinuousQuery_2__ctor_" data-uid="Apache.Ignite.Core.Cache.Query.Continuous.ContinuousQuery`2.#ctor*"></a>
  <h4 id="Apache_Ignite_Core_Cache_Query_Continuous_ContinuousQuery_2__ctor_Apache_Ignite_Core_Cache_Event_ICacheEntryEventListener__0__1__System_Boolean_" data-uid="Apache.Ignite.Core.Cache.Query.Continuous.ContinuousQuery`2.#ctor(Apache.Ignite.Core.Cache.Event.ICacheEntryEventListener{`0,`1},System.Boolean)">ContinuousQuery(ICacheEntryEventListener&lt;TK, TV&gt;, Boolean)</h4>
  <div class="markdown level1 summary"><p>Constructor.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public ContinuousQuery(ICacheEntryEventListener&lt;TK, TV&gt; lsnr, bool loc)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Cache.Event.ICacheEntryEventListener-2.html">ICacheEntryEventListener</a>&lt;TK, TV&gt;</td>
        <td><span class="parametername">lsnr</span></td>
        <td><p>Listener.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">loc</span></td>
        <td><p>Whether query should be executed locally.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h3 id="properties">Properties
  </h3>
  <a id="Apache_Ignite_Core_Cache_Query_Continuous_ContinuousQuery_2_AutoUnsubscribe_" data-uid="Apache.Ignite.Core.Cache.Query.Continuous.ContinuousQuery`2.AutoUnsubscribe*"></a>
  <h4 id="Apache_Ignite_Core_Cache_Query_Continuous_ContinuousQuery_2_AutoUnsubscribe" data-uid="Apache.Ignite.Core.Cache.Query.Continuous.ContinuousQuery`2.AutoUnsubscribe">AutoUnsubscribe</h4>
  <div class="markdown level1 summary"><p>Automatic unsubscribe flag. This flag indicates that query filters on remote nodes 
should be automatically unregistered if master node (node that initiated the query) 
leaves topology. If this flag is <code>false</code>, filters will be unregistered only 
when the query is cancelled from master node, and won&apos;t ever be unregistered if 
master node leaves grid.
<p>
Defaults to <code>true</code>.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public bool AutoUnsubscribe { get; set; }</code></pre>
  </div>
  <h5 class="propertyValue">Property Value</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td></td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Cache_Query_Continuous_ContinuousQuery_2_BufferSize_" data-uid="Apache.Ignite.Core.Cache.Query.Continuous.ContinuousQuery`2.BufferSize*"></a>
  <h4 id="Apache_Ignite_Core_Cache_Query_Continuous_ContinuousQuery_2_BufferSize" data-uid="Apache.Ignite.Core.Cache.Query.Continuous.ContinuousQuery`2.BufferSize">BufferSize</h4>
  <div class="markdown level1 summary"><p>Buffer size. When a cache update happens, entry is first put into a buffer. 
Entries from buffer will be sent to the master node only if the buffer is 
full or time provided via <a class="xref" href="Apache.Ignite.Core.Cache.Query.Continuous.ContinuousQuery-2.html#Apache_Ignite_Core_Cache_Query_Continuous_ContinuousQuery_2_TimeInterval">TimeInterval</a> is exceeded.
<p>
Defaults to <a class="xref" href="Apache.Ignite.Core.Cache.Query.Continuous.ContinuousQuery.html#Apache_Ignite_Core_Cache_Query_Continuous_ContinuousQuery_DefaultBufferSize">DefaultBufferSize</a></p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public int BufferSize { get; set; }</code></pre>
  </div>
  <h5 class="propertyValue">Property Value</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Int32</span></td>
        <td></td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Cache_Query_Continuous_ContinuousQuery_2_Filter_" data-uid="Apache.Ignite.Core.Cache.Query.Continuous.ContinuousQuery`2.Filter*"></a>
  <h4 id="Apache_Ignite_Core_Cache_Query_Continuous_ContinuousQuery_2_Filter" data-uid="Apache.Ignite.Core.Cache.Query.Continuous.ContinuousQuery`2.Filter">Filter</h4>
  <div class="markdown level1 summary"><p>Optional cache entry filter. Invoked on a node where cache event occurred. If filter
returns <code>false</code>, then cache entry event will not be sent to a node where
continuous query has been started.
<p>
Must be either binary or serializable in case query is not local.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public ICacheEntryEventFilter&lt;TK, TV&gt; Filter { get; set; }</code></pre>
  </div>
  <h5 class="propertyValue">Property Value</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Cache.Event.ICacheEntryEventFilter-2.html">ICacheEntryEventFilter</a>&lt;TK, TV&gt;</td>
        <td></td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Cache_Query_Continuous_ContinuousQuery_2_Listener_" data-uid="Apache.Ignite.Core.Cache.Query.Continuous.ContinuousQuery`2.Listener*"></a>
  <h4 id="Apache_Ignite_Core_Cache_Query_Continuous_ContinuousQuery_2_Listener" data-uid="Apache.Ignite.Core.Cache.Query.Continuous.ContinuousQuery`2.Listener">Listener</h4>
  <div class="markdown level1 summary"><p>Cache entry event listener. Invoked on the node where continuous query execution 
has been started.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public ICacheEntryEventListener&lt;TK, TV&gt; Listener { get; set; }</code></pre>
  </div>
  <h5 class="propertyValue">Property Value</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Cache.Event.ICacheEntryEventListener-2.html">ICacheEntryEventListener</a>&lt;TK, TV&gt;</td>
        <td></td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Cache_Query_Continuous_ContinuousQuery_2_Local_" data-uid="Apache.Ignite.Core.Cache.Query.Continuous.ContinuousQuery`2.Local*"></a>
  <h4 id="Apache_Ignite_Core_Cache_Query_Continuous_ContinuousQuery_2_Local" data-uid="Apache.Ignite.Core.Cache.Query.Continuous.ContinuousQuery`2.Local">Local</h4>
  <div class="markdown level1 summary"><p>Local flag. When set query will be executed only on local node, so only local 
entries will be returned as query result.
<p>
Defaults to <code>false</code>.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public bool Local { get; set; }</code></pre>
  </div>
  <h5 class="propertyValue">Property Value</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td></td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Cache_Query_Continuous_ContinuousQuery_2_TimeInterval_" data-uid="Apache.Ignite.Core.Cache.Query.Continuous.ContinuousQuery`2.TimeInterval*"></a>
  <h4 id="Apache_Ignite_Core_Cache_Query_Continuous_ContinuousQuery_2_TimeInterval" data-uid="Apache.Ignite.Core.Cache.Query.Continuous.ContinuousQuery`2.TimeInterval">TimeInterval</h4>
  <div class="markdown level1 summary"><p>Time interval. When a cache update happens, entry is first put into a buffer. 
Entries from buffer will be sent to the master node only if the buffer is full 
(its size can be provided via <a class="xref" href="Apache.Ignite.Core.Cache.Query.Continuous.ContinuousQuery-2.html#Apache_Ignite_Core_Cache_Query_Continuous_ContinuousQuery_2_BufferSize">BufferSize</a> property) or time provided 
via this method is exceeded.
<p>
Defaults to <code>0</code> which means that time check is disabled and entries will be 
sent only when buffer is full.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public TimeSpan TimeInterval { get; set; }</code></pre>
  </div>
  <h5 class="propertyValue">Property Value</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.TimeSpan</span></td>
        <td></td>
      </tr>
    </tbody>
  </table>
</article>
          </div>
          
          <div class="hidden-sm col-md-2" role="complementary">
            <div class="sideaffix">
              <nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
              <!-- <p><a class="back-to-top" href="#top">Back to top</a><p> -->
              </nav>
            </div>
          </div>
        </div>
      </div>
      
      <footer>
        <div class="grad-bottom"></div>
        <div class="footer">
          <div class="container">
            <span class="pull-right">
              <a href="#top">Back to top</a>
            </span>
            © 2015 - 2019 The Apache Software Foundation
            
          </div>
        </div>
      </footer>
    </div>
    
    <script type="text/javascript" src="../styles/docfx.vendor.js"></script>
    <script type="text/javascript" src="../styles/docfx.js"></script>
    <script type="text/javascript" src="../styles/main.js"></script>
  </body>
</html>
