<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Visual_C%2B%2B_.NET%2FDevelopment%2FIAsyncResult</id>
		<title>Visual C++ .NET/Development/IAsyncResult - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Visual_C%2B%2B_.NET%2FDevelopment%2FIAsyncResult"/>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Visual_C%2B%2B_.NET/Development/IAsyncResult&amp;action=history"/>
		<updated>2026-04-29T16:42:47Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://nfex.ru/index.php?title=Visual_C%2B%2B_.NET/Development/IAsyncResult&amp;diff=3468&amp;oldid=prev</id>
		<title> в 15:31, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Visual_C%2B%2B_.NET/Development/IAsyncResult&amp;diff=3468&amp;oldid=prev"/>
				<updated>2010-05-26T15:31:02Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 15:31, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://nfex.ru/index.php?title=Visual_C%2B%2B_.NET/Development/IAsyncResult&amp;diff=3469&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Visual_C%2B%2B_.NET/Development/IAsyncResult&amp;diff=3469&amp;oldid=prev"/>
				<updated>2010-05-26T12:04:49Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Run Async Command against database==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
#include &amp;quot;stdafx.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
using namespace System;&lt;br /&gt;
using namespace System::Data;&lt;br /&gt;
using namespace System::Data::SqlClient;&lt;br /&gt;
ref struct MyEventHandler{&lt;br /&gt;
    static void CommandCompleted(IAsyncResult^ asyncResult){&lt;br /&gt;
        SqlCommand^ asyncCommand = dynamic_cast&amp;lt;SqlCommand^&amp;gt;(asyncResult-&amp;gt;AsyncState);&lt;br /&gt;
        &lt;br /&gt;
        if ( asyncCommand!= nullptr )&lt;br /&gt;
            SqlDataReader^ dataReader = asyncCommand-&amp;gt;EndExecuteReader(asyncResult);&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
    SqlConnectionStringBuilder^ connectionBuilder = gcnew SqlConnectionStringBuilder();&lt;br /&gt;
    connectionBuilder-&amp;gt;AsynchronousProcessing = true;&lt;br /&gt;
    connectionBuilder-&amp;gt;DataSource = &amp;quot;localhost&amp;quot;;&lt;br /&gt;
    connectionBuilder-&amp;gt;InitialCatalog = &amp;quot;myCatalog&amp;quot;;&lt;br /&gt;
    connectionBuilder-&amp;gt;UserID = &amp;quot;sa&amp;quot;;&lt;br /&gt;
    connectionBuilder-&amp;gt;Password = &amp;quot;&amp;quot;;&lt;br /&gt;
    &lt;br /&gt;
    SqlConnection^ myConnection = gcnew SqlConnection(connectionBuilder-&amp;gt;ToString());&lt;br /&gt;
    myConnection-&amp;gt;Open();&lt;br /&gt;
    &lt;br /&gt;
    SqlCommand^ asyncCommand = myConnection-&amp;gt;CreateCommand();&lt;br /&gt;
    asyncCommand-&amp;gt;CommandText = &amp;quot;SELECT * FROM Music&amp;quot;;&lt;br /&gt;
    &lt;br /&gt;
    AsyncCallback^ asyncCallback = gcnew AsyncCallback(MyEventHandler::CommandCompleted);&lt;br /&gt;
    &lt;br /&gt;
    IAsyncResult^ asyncResult = asyncCommand-&amp;gt;BeginExecuteReader(asyncCallback, asyncCommand);&lt;br /&gt;
    &lt;br /&gt;
    asyncResult-&amp;gt;AsyncWaitHandle-&amp;gt;WaitOne();&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Using IAsyncResult==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
#include &amp;quot;stdafx.h&amp;quot;&lt;br /&gt;
using namespace System;&lt;br /&gt;
using namespace System::Threading;&lt;br /&gt;
ref class MyClass{&lt;br /&gt;
public:&lt;br /&gt;
   property String^ Value;&lt;br /&gt;
   MyClass(String^ s) { Value = s; }&lt;br /&gt;
};&lt;br /&gt;
delegate void DoSearch(String^, MyClass^);&lt;br /&gt;
ref class Database{&lt;br /&gt;
   IAsyncResult^ result;&lt;br /&gt;
   MyClass^ m_r;&lt;br /&gt;
   public:&lt;br /&gt;
      Database(String^ s) { m_r = gcnew MyClass(s); }&lt;br /&gt;
   void Query(String^ queryString, MyClass^ r){&lt;br /&gt;
       r-&amp;gt;Value = &amp;quot;New Value&amp;quot;;&lt;br /&gt;
   }&lt;br /&gt;
   void InitiateQuery(String^ queryString){&lt;br /&gt;
      DoSearch^ qf = gcnew DoSearch(this, &amp;amp;Database::Query);&lt;br /&gt;
      Console::WriteLine(m_r-&amp;gt;Value);&lt;br /&gt;
      result = qf-&amp;gt;BeginInvoke(queryString, m_r,gcnew AsyncCallback(this, &amp;amp;Database::ProcessResult),qf);&lt;br /&gt;
   }&lt;br /&gt;
   bool IsQueryCompleted(){&lt;br /&gt;
      return result-&amp;gt;IsCompleted;&lt;br /&gt;
   }&lt;br /&gt;
   void ProcessResult(IAsyncResult^ result)&lt;br /&gt;
   {&lt;br /&gt;
      DoSearch^ caller = (DoSearch^) result-&amp;gt;AsyncState;&lt;br /&gt;
      caller-&amp;gt;EndInvoke(result);&lt;br /&gt;
      Console::WriteLine(m_r-&amp;gt;Value);&lt;br /&gt;
   }&lt;br /&gt;
};&lt;br /&gt;
int main(){&lt;br /&gt;
   Database doc(&amp;quot;Old Value&amp;quot;);&lt;br /&gt;
   doc.InitiateQuery(&amp;quot;SELECT * FROM Employee &amp;quot;);&lt;br /&gt;
   while (! doc.IsQueryCompleted() ){&lt;br /&gt;
       Thread::Sleep(100);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>