<!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>
<link rel="canonical" href="https://ignite.apache.org/releases/2.0.0/dotnetdoc/interface_apache_1_1_ignite_1_1_core_1_1_cache_1_1_event_1_1_i_cache_entry_event_listener.html" />
<META NAME="ROBOTS" CONTENT="NOINDEX">

<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: Apache.Ignite.Core.Cache.Event.ICacheEntryEventListener&lt; TK, TV &gt; Interface Template Reference</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('interface_apache_1_1_ignite_1_1_core_1_1_cache_1_1_event_1_1_i_cache_entry_event_listener.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="interface_apache_1_1_ignite_1_1_core_1_1_cache_1_1_event_1_1_i_cache_entry_event_listener-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">Apache.Ignite.Core.Cache.Event.ICacheEntryEventListener&lt; TK, TV &gt; Interface Template Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Cache entry event listener.  
 <a href="interface_apache_1_1_ignite_1_1_core_1_1_cache_1_1_event_1_1_i_cache_entry_event_listener.html#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a926eb4a5c5d6d87a1dc8e5d6a42be896"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cache_1_1_event_1_1_i_cache_entry_event_listener.html#a926eb4a5c5d6d87a1dc8e5d6a42be896">OnEvent</a> (IEnumerable&lt; <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cache_1_1_event_1_1_i_cache_entry_event.html">ICacheEntryEvent</a>&lt; TK, TV &gt;&gt; evts)</td></tr>
<tr class="memdesc:a926eb4a5c5d6d87a1dc8e5d6a42be896"><td class="mdescLeft">&#160;</td><td class="mdescRight">Event callback.  <a href="#a926eb4a5c5d6d87a1dc8e5d6a42be896">More...</a><br /></td></tr>
<tr class="separator:a926eb4a5c5d6d87a1dc8e5d6a42be896"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"></div><h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a926eb4a5c5d6d87a1dc8e5d6a42be896"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cache_1_1_event_1_1_i_cache_entry_event_listener.html">Apache.Ignite.Core.Cache.Event.ICacheEntryEventListener</a>&lt; TK, TV &gt;.OnEvent </td>
          <td>(</td>
          <td class="paramtype">IEnumerable&lt; <a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cache_1_1_event_1_1_i_cache_entry_event.html">ICacheEntryEvent</a>&lt; TK, TV &gt;&gt;&#160;</td>
          <td class="paramname"><em>evts</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">evts</td><td>Events.</td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="namespace_apache.html">Apache</a></li><li class="navelem"><a class="el" href="namespace_apache_1_1_ignite.html">Ignite</a></li><li class="navelem"><a class="el" href="namespace_apache_1_1_ignite_1_1_core.html">Core</a></li><li class="navelem"><a class="el" href="namespace_apache_1_1_ignite_1_1_core_1_1_cache.html">Cache</a></li><li class="navelem"><a class="el" href="namespace_apache_1_1_ignite_1_1_core_1_1_cache_1_1_event.html">Event</a></li><li class="navelem"><a class="el" href="interface_apache_1_1_ignite_1_1_core_1_1_cache_1_1_event_1_1_i_cache_entry_event_listener.html">ICacheEntryEventListener</a></li>
    <li class="footer">Generated on Sun Apr 30 2017 12:15:05 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>
