﻿<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
  
  <head>
<!-- Yandex.Metrika counter -->
    <script type="text/javascript" >
      (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
      m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
      (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
    
      ym(72949126, "init", {
           clickmap:true,
           trackLinks:true,
           accurateTrackBounce:true,
           webvisor:true
      });
    </script>
    <noscript><div><img src="https://mc.yandex.ru/watch/72949126" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
    <!-- /Yandex.Metrika counter -->
<script type='text/javascript'>
    window.__lo_site_id = 284467;
    
      (function() {
        var wa = document.createElement('script'); wa.type = 'text/javascript'; wa.async = true;
        wa.src = 'https://d10lpsik1i8c69.cloudfront.net/w.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(wa, s);
        })();
      </script>
<link rel="canonical" href="https://ignite.apache.org/releases/latest/dotnetdoc/api/Apache.Ignite.Core.Ignition.html" />

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>Class Ignition
   | Apache Ignite.NET </title>
    <meta name="viewport" content="width=device-width">
    <meta name="title" content="Class Ignition
   | 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.Ignition">
  
  
  <h1 id="Apache_Ignite_Core_Ignition" data-uid="Apache.Ignite.Core.Ignition" class="text-break">Class Ignition
  </h1>
  <div class="markdown level0 summary"><p>This class defines a factory for the main Ignite API.
<p>
Use <a class="xref" href="Apache.Ignite.Core.Ignition.html#Apache_Ignite_Core_Ignition_Start">Start()</a> method to start Ignite with default configuration.
<p>
All members are thread-safe and may be used concurrently from multiple threads.</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"><span class="xref">Ignition</span></div>
  </div>
  <div class="inheritedMembers">
    <h5>Inherited Members</h5>
    <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.html">Apache.Ignite.Core</a></h6>
  <h6><strong>Assembly</strong>: Apache.Ignite.Core.dll</h6>
  <h5 id="Apache_Ignite_Core_Ignition_syntax">Syntax</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static class Ignition</code></pre>
  </div>
  <h3 id="fields">Fields
  </h3>
  <h4 id="Apache_Ignite_Core_Ignition_ClientConfigurationSectionName" data-uid="Apache.Ignite.Core.Ignition.ClientConfigurationSectionName">ClientConfigurationSectionName</h4>
  <div class="markdown level1 summary"><p>Default configuration section name.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public const string ClientConfigurationSectionName = &quot;igniteClientConfiguration&quot;</code></pre>
  </div>
  <h5 class="fieldValue">Field 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.String</span></td>
        <td></td>
      </tr>
    </tbody>
  </table>
  <h4 id="Apache_Ignite_Core_Ignition_ConfigurationSectionName" data-uid="Apache.Ignite.Core.Ignition.ConfigurationSectionName">ConfigurationSectionName</h4>
  <div class="markdown level1 summary"><p>Default configuration section name.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public const string ConfigurationSectionName = &quot;igniteConfiguration&quot;</code></pre>
  </div>
  <h5 class="fieldValue">Field 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.String</span></td>
        <td></td>
      </tr>
    </tbody>
  </table>
  <h3 id="properties">Properties
  </h3>
  <a id="Apache_Ignite_Core_Ignition_ClientMode_" data-uid="Apache.Ignite.Core.Ignition.ClientMode*"></a>
  <h4 id="Apache_Ignite_Core_Ignition_ClientMode" data-uid="Apache.Ignite.Core.Ignition.ClientMode">ClientMode</h4>
  <div class="markdown level1 summary"><p>Gets or sets a value indicating whether Ignite should be started in client mode.
Client nodes cannot hold data in caches.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static bool ClientMode { 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>
  <h3 id="methods">Methods
  </h3>
  <a id="Apache_Ignite_Core_Ignition_GetAll_" data-uid="Apache.Ignite.Core.Ignition.GetAll*"></a>
  <h4 id="Apache_Ignite_Core_Ignition_GetAll" data-uid="Apache.Ignite.Core.Ignition.GetAll">GetAll()</h4>
  <div class="markdown level1 summary"><p>Gets all started Ignite instances.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static ICollection&lt;IIgnite&gt; GetAll()</code></pre>
  </div>
  <h5 class="returns">Returns</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.Collections.Generic.ICollection</span>&lt;<a class="xref" href="Apache.Ignite.Core.IIgnite.html">IIgnite</a>&gt;</td>
        <td><p>All Ignite instances.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Ignition_GetIgnite_" data-uid="Apache.Ignite.Core.Ignition.GetIgnite*"></a>
  <h4 id="Apache_Ignite_Core_Ignition_GetIgnite" data-uid="Apache.Ignite.Core.Ignition.GetIgnite">GetIgnite()</h4>
  <div class="markdown level1 summary"><p>Gets the default Ignite instance with null name, or an instance with any name when there is only one.
<p>
Note that caller of this method should not assume that it will return the same instance every time.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static IIgnite GetIgnite()</code></pre>
  </div>
  <h5 class="returns">Returns</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.IIgnite.html">IIgnite</a></td>
        <td><p>Default Ignite instance.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="exceptions">Exceptions</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Condition</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Common.IgniteException.html">IgniteException</a></td>
        <td><p>When there is no matching Ignite instance.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Ignition_GetIgnite_" data-uid="Apache.Ignite.Core.Ignition.GetIgnite*"></a>
  <h4 id="Apache_Ignite_Core_Ignition_GetIgnite_System_String_" data-uid="Apache.Ignite.Core.Ignition.GetIgnite(System.String)">GetIgnite(String)</h4>
  <div class="markdown level1 summary"><p>Gets a named Ignite instance. If Ignite name is <code>null</code> or empty string,
then default no-name Ignite will be returned. Note that caller of this method
should not assume that it will return the same instance every time.
<p>
Note that single process can run multiple Ignite instances and every Ignite instance (and its
node) can belong to a different grid. Ignite name defines what grid a particular Ignite
instance (and correspondingly its node) belongs to.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static IIgnite GetIgnite(string name)</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><span class="xref">System.String</span></td>
        <td><span class="parametername">name</span></td>
        <td><p>Ignite name to which requested Ignite instance belongs. If <code>null</code>,
then Ignite instance belonging to a default no-name Ignite will be returned.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</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.IIgnite.html">IIgnite</a></td>
        <td><p>An instance of named grid.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="exceptions">Exceptions</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Condition</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Common.IgniteException.html">IgniteException</a></td>
        <td><p>When there is no Ignite instance with specified name.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Ignition_Start_" data-uid="Apache.Ignite.Core.Ignition.Start*"></a>
  <h4 id="Apache_Ignite_Core_Ignition_Start" data-uid="Apache.Ignite.Core.Ignition.Start">Start()</h4>
  <div class="markdown level1 summary"><p>Starts Ignite with default configuration. By default this method will
use Ignite configuration defined in <code>{IGNITE_HOME}/config/default-config.xml</code>
configuration file. If such file is not found, then all system defaults will be used.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static IIgnite Start()</code></pre>
  </div>
  <h5 class="returns">Returns</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.IIgnite.html">IIgnite</a></td>
        <td><p>Started Ignite.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Ignition_Start_" data-uid="Apache.Ignite.Core.Ignition.Start*"></a>
  <h4 id="Apache_Ignite_Core_Ignition_Start_Apache_Ignite_Core_IgniteConfiguration_" data-uid="Apache.Ignite.Core.Ignition.Start(Apache.Ignite.Core.IgniteConfiguration)">Start(IgniteConfiguration)</h4>
  <div class="markdown level1 summary"><p>Starts Ignite with given configuration.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static IIgnite Start(IgniteConfiguration cfg)</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.IgniteConfiguration.html">IgniteConfiguration</a></td>
        <td><span class="parametername">cfg</span></td>
        <td></td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</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.IIgnite.html">IIgnite</a></td>
        <td><p>Started Ignite.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Ignition_Start_" data-uid="Apache.Ignite.Core.Ignition.Start*"></a>
  <h4 id="Apache_Ignite_Core_Ignition_Start_System_String_" data-uid="Apache.Ignite.Core.Ignition.Start(System.String)">Start(String)</h4>
  <div class="markdown level1 summary"><p>Starts all grids specified within given Spring XML configuration file. If Ignite with given name
is already started, then exception is thrown. In this case all instances that may
have been started so far will be stopped too.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static IIgnite Start(string springCfgPath)</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><span class="xref">System.String</span></td>
        <td><span class="parametername">springCfgPath</span></td>
        <td><p>Spring XML configuration file path or URL. Note, that the path can be
absolute or relative to IGNITE_HOME.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</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.IIgnite.html">IIgnite</a></td>
        <td><p>Started Ignite. If Spring configuration contains multiple Ignite instances, then the 1st
found instance is returned.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Ignition_StartClient_" data-uid="Apache.Ignite.Core.Ignition.StartClient*"></a>
  <h4 id="Apache_Ignite_Core_Ignition_StartClient" data-uid="Apache.Ignite.Core.Ignition.StartClient">StartClient()</h4>
  <div class="markdown level1 summary"><p>Reads <a class="xref" href="Apache.Ignite.Core.Client.IgniteClientConfiguration.html">IgniteClientConfiguration</a> from application configuration
<a class="xref" href="Apache.Ignite.Core.Client.IgniteClientConfigurationSection.html">IgniteClientConfigurationSection</a> with <a class="xref" href="Apache.Ignite.Core.Ignition.html#Apache_Ignite_Core_Ignition_ClientConfigurationSectionName">ClientConfigurationSectionName</a>
name and connects Ignite lightweight (thin) client to an Ignite node.
<p>
Thin client connects to an existing Ignite node with a socket and does not start JVM in process.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static IIgniteClient StartClient()</code></pre>
  </div>
  <h5 class="returns">Returns</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.Client.IIgniteClient.html">IIgniteClient</a></td>
        <td><p>Ignite client instance.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Ignition_StartClient_" data-uid="Apache.Ignite.Core.Ignition.StartClient*"></a>
  <h4 id="Apache_Ignite_Core_Ignition_StartClient_Apache_Ignite_Core_Client_IgniteClientConfiguration_" data-uid="Apache.Ignite.Core.Ignition.StartClient(Apache.Ignite.Core.Client.IgniteClientConfiguration)">StartClient(IgniteClientConfiguration)</h4>
  <div class="markdown level1 summary"><p>Connects Ignite lightweight (thin) client to an Ignite node.
<p>
Thin client connects to an existing Ignite node with a socket and does not start JVM in process.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static IIgniteClient StartClient(IgniteClientConfiguration clientConfiguration)</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.Client.IgniteClientConfiguration.html">IgniteClientConfiguration</a></td>
        <td><span class="parametername">clientConfiguration</span></td>
        <td><p>The client configuration.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</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.Client.IIgniteClient.html">IIgniteClient</a></td>
        <td><p>Ignite client instance.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Ignition_StartClient_" data-uid="Apache.Ignite.Core.Ignition.StartClient*"></a>
  <h4 id="Apache_Ignite_Core_Ignition_StartClient_System_String_" data-uid="Apache.Ignite.Core.Ignition.StartClient(System.String)">StartClient(String)</h4>
  <div class="markdown level1 summary"><p>Reads <a class="xref" href="Apache.Ignite.Core.Client.IgniteClientConfiguration.html">IgniteClientConfiguration</a> from application configuration
<a class="xref" href="Apache.Ignite.Core.Client.IgniteClientConfigurationSection.html">IgniteClientConfigurationSection</a> with specified name and connects
Ignite lightweight (thin) client to an Ignite node.
<p>
Thin client connects to an existing Ignite node with a socket and does not start JVM in process.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static IIgniteClient StartClient(string sectionName)</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><span class="xref">System.String</span></td>
        <td><span class="parametername">sectionName</span></td>
        <td><p>Name of the configuration section.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</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.Client.IIgniteClient.html">IIgniteClient</a></td>
        <td><p>Ignite client instance.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Ignition_StartClient_" data-uid="Apache.Ignite.Core.Ignition.StartClient*"></a>
  <h4 id="Apache_Ignite_Core_Ignition_StartClient_System_String_System_String_" data-uid="Apache.Ignite.Core.Ignition.StartClient(System.String,System.String)">StartClient(String, String)</h4>
  <div class="markdown level1 summary"><p>Reads <a class="xref" href="Apache.Ignite.Core.IgniteConfiguration.html">IgniteConfiguration</a> from application configuration
<a class="xref" href="Apache.Ignite.Core.IgniteConfigurationSection.html">IgniteConfigurationSection</a> with specified name and starts Ignite.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static IIgniteClient StartClient(string sectionName, string configPath)</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><span class="xref">System.String</span></td>
        <td><span class="parametername">sectionName</span></td>
        <td><p>Name of the section.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.String</span></td>
        <td><span class="parametername">configPath</span></td>
        <td><p>Path to the configuration file.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</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.Client.IIgniteClient.html">IIgniteClient</a></td>
        <td><p>Started Ignite.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Ignition_StartFromApplicationConfiguration_" data-uid="Apache.Ignite.Core.Ignition.StartFromApplicationConfiguration*"></a>
  <h4 id="Apache_Ignite_Core_Ignition_StartFromApplicationConfiguration" data-uid="Apache.Ignite.Core.Ignition.StartFromApplicationConfiguration">StartFromApplicationConfiguration()</h4>
  <div class="markdown level1 summary"><p>Reads <a class="xref" href="Apache.Ignite.Core.IgniteConfiguration.html">IgniteConfiguration</a> from application configuration
<a class="xref" href="Apache.Ignite.Core.IgniteConfigurationSection.html">IgniteConfigurationSection</a> with <a class="xref" href="Apache.Ignite.Core.Ignition.html#Apache_Ignite_Core_Ignition_ConfigurationSectionName">ConfigurationSectionName</a>
name and starts Ignite.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static IIgnite StartFromApplicationConfiguration()</code></pre>
  </div>
  <h5 class="returns">Returns</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.IIgnite.html">IIgnite</a></td>
        <td><p>Started Ignite.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Ignition_StartFromApplicationConfiguration_" data-uid="Apache.Ignite.Core.Ignition.StartFromApplicationConfiguration*"></a>
  <h4 id="Apache_Ignite_Core_Ignition_StartFromApplicationConfiguration_System_String_" data-uid="Apache.Ignite.Core.Ignition.StartFromApplicationConfiguration(System.String)">StartFromApplicationConfiguration(String)</h4>
  <div class="markdown level1 summary"><p>Reads <a class="xref" href="Apache.Ignite.Core.IgniteConfiguration.html">IgniteConfiguration</a> from application configuration 
<a class="xref" href="Apache.Ignite.Core.IgniteConfigurationSection.html">IgniteConfigurationSection</a> with specified name and starts Ignite.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static IIgnite StartFromApplicationConfiguration(string sectionName)</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><span class="xref">System.String</span></td>
        <td><span class="parametername">sectionName</span></td>
        <td><p>Name of the section.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</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.IIgnite.html">IIgnite</a></td>
        <td><p>Started Ignite.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Ignition_StartFromApplicationConfiguration_" data-uid="Apache.Ignite.Core.Ignition.StartFromApplicationConfiguration*"></a>
  <h4 id="Apache_Ignite_Core_Ignition_StartFromApplicationConfiguration_System_String_System_String_" data-uid="Apache.Ignite.Core.Ignition.StartFromApplicationConfiguration(System.String,System.String)">StartFromApplicationConfiguration(String, String)</h4>
  <div class="markdown level1 summary"><p>Reads <a class="xref" href="Apache.Ignite.Core.IgniteConfiguration.html">IgniteConfiguration</a> from application configuration
<a class="xref" href="Apache.Ignite.Core.IgniteConfigurationSection.html">IgniteConfigurationSection</a> with specified name and starts Ignite.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static IIgnite StartFromApplicationConfiguration(string sectionName, string configPath)</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><span class="xref">System.String</span></td>
        <td><span class="parametername">sectionName</span></td>
        <td><p>Name of the section.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.String</span></td>
        <td><span class="parametername">configPath</span></td>
        <td><p>Path to the configuration file.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</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.IIgnite.html">IIgnite</a></td>
        <td><p>Started Ignite.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Ignition_Stop_" data-uid="Apache.Ignite.Core.Ignition.Stop*"></a>
  <h4 id="Apache_Ignite_Core_Ignition_Stop_System_String_System_Boolean_" data-uid="Apache.Ignite.Core.Ignition.Stop(System.String,System.Boolean)">Stop(String, Boolean)</h4>
  <div class="markdown level1 summary"><p>Stops named grid. If <code>cancel</code> flag is set to <code>true</code> then
all jobs currently executing on local node will be interrupted. If
grid name is <code>null</code>, then default no-name Ignite will be stopped.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static bool Stop(string name, bool cancel)</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><span class="xref">System.String</span></td>
        <td><span class="parametername">name</span></td>
        <td><p>Grid name. If <code>null</code>, then default no-name Ignite will be stopped.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">cancel</span></td>
        <td><p>If <code>true</code> then all jobs currently executing will be cancelled
by calling <code>ComputeJob.cancel</code>method.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</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><p><code>true</code> if named Ignite instance was indeed found and stopped, <code>false</code>
    othwerwise (the instance with given <code>name</code> was not found).</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Ignition_StopAll_" data-uid="Apache.Ignite.Core.Ignition.StopAll*"></a>
  <h4 id="Apache_Ignite_Core_Ignition_StopAll_System_Boolean_" data-uid="Apache.Ignite.Core.Ignition.StopAll(System.Boolean)">StopAll(Boolean)</h4>
  <div class="markdown level1 summary"><p>Stops <strong>all</strong> started grids. If <code>cancel</code> flag is set to <code>true</code> then
all jobs currently executing on local node will be interrupted.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static void StopAll(bool cancel)</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><span class="xref">System.Boolean</span></td>
        <td><span class="parametername">cancel</span></td>
        <td><p>If <code>true</code> then all jobs currently executing will be cancelled
by calling <code>ComputeJob.Cancel()</code> method.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Ignition_TryGetIgnite_" data-uid="Apache.Ignite.Core.Ignition.TryGetIgnite*"></a>
  <h4 id="Apache_Ignite_Core_Ignition_TryGetIgnite" data-uid="Apache.Ignite.Core.Ignition.TryGetIgnite">TryGetIgnite()</h4>
  <div class="markdown level1 summary"><p>Gets the default Ignite instance with null name, or an instance with any name when there is only one.
Returns null when there are no Ignite instances started, or when there are more than one,
and none of them has null name.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static IIgnite TryGetIgnite()</code></pre>
  </div>
  <h5 class="returns">Returns</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.IIgnite.html">IIgnite</a></td>
        <td><p>An instance of default no-name grid, or null.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Ignition_TryGetIgnite_" data-uid="Apache.Ignite.Core.Ignition.TryGetIgnite*"></a>
  <h4 id="Apache_Ignite_Core_Ignition_TryGetIgnite_System_String_" data-uid="Apache.Ignite.Core.Ignition.TryGetIgnite(System.String)">TryGetIgnite(String)</h4>
  <div class="markdown level1 summary"><p>Gets a named Ignite instance, or <code>null</code> if none found. If Ignite name is <code>null</code> or empty string,
then default no-name Ignite will be returned. Note that caller of this method
should not assume that it will return the same instance every time.
<p>
Note that single process can run multiple Ignite instances and every Ignite instance (and its
node) can belong to a different grid. Ignite name defines what grid a particular Ignite
instance (and correspondingly its node) belongs to.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static IIgnite TryGetIgnite(string name)</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><span class="xref">System.String</span></td>
        <td><span class="parametername">name</span></td>
        <td><p>Ignite name to which requested Ignite instance belongs. If <code>null</code>,
then Ignite instance belonging to a default no-name Ignite will be returned.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</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.IIgnite.html">IIgnite</a></td>
        <td><p>An instance of named grid, or null.</p>
</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>
