<!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.7.0/dotnetdoc/functions_func_e.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_e.html','');});
</script>
<div id="doc-content">
<div class="contents">
&#160;

<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
<li>EnableLocal()
: <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_events_1_1_i_events.html#afca96efeba805045c24daf31442cf2f5">Apache.Ignite.Core.Events.IEvents</a>
</li>
<li>Enter()
: <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cache_1_1_i_cache_lock.html#ae8ffcfe62d8b58a77b3222ea783deb66">Apache.Ignite.Core.Cache.ICacheLock</a>
</li>
<li>Equals()
: <a class="el" href="struct_apache_1_1_ignite_1_1_core_1_1_cache_1_1_affinity_1_1_affinity_key.html#a4633b8f057fba6efa6315f822fd232a2">Apache.Ignite.Core.Cache.Affinity.AffinityKey</a>
, <a class="el" href="struct_apache_1_1_ignite_1_1_core_1_1_cache_1_1_affinity_1_1_affinity_topology_version.html#a8f9c5fcc0b05bf3619b5ec5afbeca130">Apache.Ignite.Core.Cache.Affinity.AffinityTopologyVersion</a>
, <a class="el" href="struct_apache_1_1_ignite_1_1_core_1_1_cache_1_1_cache_result.html#abf03b93604d4b0d1fe77e4580295c254">Apache.Ignite.Core.Cache.CacheResult&lt; T &gt;</a>
, <a class="el" href="struct_apache_1_1_ignite_1_1_core_1_1_common_1_1_ignite_guid.html#a44bb1a106fe2539e0d58f7ca0b41cf4f">Apache.Ignite.Core.Common.IgniteGuid</a>
, <a class="el" href="class_apache_1_1_ignite_1_1_core_1_1_events_1_1_event_base.html#a1c94907971523fbd85ddb18a22d70363">Apache.Ignite.Core.Events.EventBase</a>
</li>
<li>Evaluate()
: <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cache_1_1_event_1_1_i_cache_entry_event_filter.html#a3ce0922ed0e066615b1297c4027f5656">Apache.Ignite.Core.Cache.Event.ICacheEntryEventFilter&lt; TK, TV &gt;</a>
</li>
<li>EventBase()
: <a class="el" href="class_apache_1_1_ignite_1_1_core_1_1_events_1_1_event_base.html#af3f9515ffa9d71dc1690f4548901ba86">Apache.Ignite.Core.Events.EventBase</a>
</li>
<li>Exchange()
: <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_data_structures_1_1_i_atomic_long.html#a5a44de5d24cf15192d0e393fc4977636">Apache.Ignite.Core.DataStructures.IAtomicLong</a>
</li>
<li>Execute()
: <a class="el" href="class_apache_1_1_ignite_1_1_core_1_1_compute_1_1_compute_job_adapter.html#a7d55db1e7dddca32d83781f5239b1e51">Apache.Ignite.Core.Compute.ComputeJobAdapter&lt; T &gt;</a>
, <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_compute_1_1_i_compute_job.html#abca416d1dc9f6f681806422de5a97b01">Apache.Ignite.Core.Compute.IComputeJob&lt; out out TRes &gt;</a>
, <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_services_1_1_i_service.html#a157163294e7ac13115b111ecf3b109f2">Apache.Ignite.Core.Services.IService</a>
</li>
<li>Execute&lt; TArg, TJobRes, TRes &gt;()
: <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_compute_1_1_i_compute.html#a403d388842b7459fb90325593e64f939">Apache.Ignite.Core.Compute.ICompute</a>
</li>
<li>Execute&lt; TJobRes, TRes &gt;()
: <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_compute_1_1_i_compute.html#af3ad8286ae5e60c803390836eddbf28b">Apache.Ignite.Core.Compute.ICompute</a>
</li>
<li>ExecuteAsync&lt; TArg, TJobRes, TRes &gt;()
: <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_compute_1_1_i_compute.html#a84db2310ff58c1e42d1edc21403bc77a">Apache.Ignite.Core.Compute.ICompute</a>
</li>
<li>ExecuteAsync&lt; TJobRes, TRes &gt;()
: <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_compute_1_1_i_compute.html#a3237bdd018ad739800937f2d171b11fe">Apache.Ignite.Core.Compute.ICompute</a>
</li>
<li>ExecuteJavaTask&lt; TRes &gt;()
: <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_compute_1_1_i_compute.html#a958990c5a061da659072e86b04fa0a3f">Apache.Ignite.Core.Compute.ICompute</a>
</li>
<li>ExecuteJavaTaskAsync&lt; TRes &gt;()
: <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_compute_1_1_i_compute.html#acf24b7d7ad7f22d5d47cd47c0a80d555">Apache.Ignite.Core.Compute.ICompute</a>
</li>
<li>Exit()
: <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cache_1_1_i_cache_lock.html#a4e933b456d303b5d36daa90e67a93bde">Apache.Ignite.Core.Cache.ICacheLock</a>
</li>
<li>ExpiryPolicy()
: <a class="el" href="class_apache_1_1_ignite_1_1_core_1_1_cache_1_1_expiry_1_1_expiry_policy.html#a258e5ccb1a8806854a2d2c5d0a60c78e">Apache.Ignite.Core.Cache.Expiry.ExpiryPolicy</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 Mon Aug 1 2016 19:40:28 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>
