<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<META NAME="ROBOTS" CONTENT="NOINDEX">
<link rel="canonical" href="https://ignite.apache.org/releases/1.5.0.final/dotnetdoc/functions_func_i.html" />
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Apache Ignite.NET: Class Members - Functions</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />

<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>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="ignite_logo.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">Apache Ignite.NET
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('functions_func_i.html','');});
</script>
<div id="doc-content">
<div class="contents">
&#160;

<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
<li>IgniteConfiguration()
: <a class="el" href="class_apache_1_1_ignite_1_1_core_1_1_ignite_configuration.html#a1be593f0b538df2eecbca41cb91fab79">Apache.Ignite.Core.IgniteConfiguration</a>
</li>
<li>IgniteException()
: <a class="el" href="class_apache_1_1_ignite_1_1_core_1_1_common_1_1_ignite_exception.html#a48dbd355b4476bcee246b1c2fc9b8e97">Apache.Ignite.Core.Common.IgniteException</a>
</li>
<li>IgniteGuid()
: <a class="el" href="struct_apache_1_1_ignite_1_1_core_1_1_common_1_1_ignite_guid.html#a49c74953fb0796e4b5abc86dbf9500da">Apache.Ignite.Core.Common.IgniteGuid</a>
</li>
<li>Increment()
: <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_data_structures_1_1_i_atomic_long.html#a6742d734db058837e9ea0885a396e2d1">Apache.Ignite.Core.DataStructures.IAtomicLong</a>
</li>
<li>Init()
: <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_services_1_1_i_service.html#a0ce1edb450945f00e531706875fbc943">Apache.Ignite.Core.Services.IService</a>
</li>
<li>Invoke()
: <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cache_1_1_i_cache_entry_filter.html#ab8a7a8ad7065344a4dfc9f58aceb327d">Apache.Ignite.Core.Cache.ICacheEntryFilter&lt; in in TK, in in TV &gt;</a>
, <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cluster_1_1_i_cluster_node_filter.html#a676b87f48dc908344cbbf35c043c38a2">Apache.Ignite.Core.Cluster.IClusterNodeFilter</a>
, <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_compute_1_1_i_compute_action.html#a72d17b63e34960fa1c0eab6a86870a83">Apache.Ignite.Core.Compute.IComputeAction</a>
, <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_compute_1_1_i_compute_func.html#a17dd994ffd2caaf7f0d218cb472f292d">Apache.Ignite.Core.Compute.IComputeFunc&lt; out out TRes &gt;</a>
, <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_events_1_1_i_event_filter.html#ad30ae41ebd678237f1174d4ffdee4e2f">Apache.Ignite.Core.Events.IEventFilter&lt; in in T &gt;</a>
, <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_events_1_1_i_event_listener.html#a98e36198dab04e047805cfbae49633ac">Apache.Ignite.Core.Events.IEventListener&lt; in in T &gt;</a>
, <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_messaging_1_1_i_message_listener.html#a3cd565f11a4ab81651efbedd8d02c69f">Apache.Ignite.Core.Messaging.IMessageListener&lt; in in T &gt;</a>
</li>
<li>Invoke&lt; TArg, TRes &gt;()
: <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cache_1_1_i_cache.html#a59697c44f378e98159cde69c7a735979">Apache.Ignite.Core.Cache.ICache&lt; TK, TV &gt;</a>
</li>
<li>InvokeAll&lt; TArg, TRes &gt;()
: <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cache_1_1_i_cache.html#a16ca949f9a720a5d4efe9fa292133ac8">Apache.Ignite.Core.Cache.ICache&lt; TK, TV &gt;</a>
</li>
<li>InvokeAllAsync&lt; TArg, TRes &gt;()
: <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cache_1_1_i_cache.html#a1bfb767877bad5defc538b23a6c97124">Apache.Ignite.Core.Cache.ICache&lt; TK, TV &gt;</a>
</li>
<li>InvokeAsync&lt; TArg, TRes &gt;()
: <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cache_1_1_i_cache.html#afc2d664bfff49eb6fe17339f6f4555c4">Apache.Ignite.Core.Cache.ICache&lt; TK, TV &gt;</a>
</li>
<li>IsBackup&lt; TK &gt;()
: <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cache_1_1_i_cache_affinity.html#a49b9468b66541ce06a9b8a778239c7c4">Apache.Ignite.Core.Cache.ICacheAffinity</a>
</li>
<li>IsCancelled()
: <a class="el" href="class_apache_1_1_ignite_1_1_core_1_1_compute_1_1_compute_job_adapter.html#a3adaf18e429b725878a3f51d73ad6aeb">Apache.Ignite.Core.Compute.ComputeJobAdapter&lt; T &gt;</a>
</li>
<li>IsClosed()
: <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_data_structures_1_1_i_atomic_long.html#a703b39b46a67b5ca621d658ccf9e0d4b">Apache.Ignite.Core.DataStructures.IAtomicLong</a>
</li>
<li>IsEmpty()
: <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cache_1_1_i_cache.html#a07f1ee8ee628c6f27739bec638da27ba">Apache.Ignite.Core.Cache.ICache&lt; TK, TV &gt;</a>
</li>
<li>IsEnabled()
: <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_events_1_1_i_events.html#a6029413c6290cb8acd446943f994a993">Apache.Ignite.Core.Events.IEvents</a>
</li>
<li>IsLocalLocked()
: <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cache_1_1_i_cache.html#afb79e3b49f8ec7a7883f399a0ce25a03">Apache.Ignite.Core.Cache.ICache&lt; TK, TV &gt;</a>
</li>
<li>IsPrimary&lt; TK &gt;()
: <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cache_1_1_i_cache_affinity.html#a2b592d3928307c0ee5ac0166b0659d53">Apache.Ignite.Core.Cache.ICacheAffinity</a>
</li>
<li>IsPrimaryOrBackup&lt; TK &gt;()
: <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cache_1_1_i_cache_affinity.html#a132688b99d1a4b03b8d54b088a2d69b5">Apache.Ignite.Core.Cache.ICacheAffinity</a>
</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated on Tue Dec 29 2015 13:22:06 for Apache Ignite.NET by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.9.1 </li>
  </ul>
</div>
</body>
</html>
