2014-09-05 6 views
0

SQL 명령을 PowerShell과 비동기 적으로 실행하려고합니다. 이것을 달성하기 위해서 나는 SqlCommand 클래스와 BeginExecuteNonQuery 메소드를 사용하고 있습니다. 내가 아는 한이 메서드는 IAsyncResult 클래스를 반환해야합니다. 그러나 반환 값을 검사하려고 할 때 나는 System.Data.Common.DbAsyncResult 클래스를 참조하십시오.비동기 프로 시저 문제

제게 잘못하고있는 부분이나 제 실수에 대해 읽을 수있는 부분을 말씀해주십시오. 프로그래밍에 익숙하지 않습니다. 이 스크립트의

$connection = New-Object System.Data.SqlClient.SqlConnection 
"addr=tcp:192.168.0.81,1433;Database=ArchiCredit;uid=sa;password=1;Async=true;" 
$connection.Open() 
$connection.State 
$command = New-Object System.Data.SqlClient.SqlCommand ("update clients set fullname = 'ololo' where id = 15", $connection) 
$state = $command.BeginExecuteNonQuery() 
$state | gm 

결과가 정상

PS C:\Users\ivanov> F:\AsyncSQL.ps1 
Open 


TypeName: System.Data.Common.DbAsyncResult 

Name  MemberType Definition      
----  ---------- ----------      
Equals  Method  bool Equals(System.Object obj) 
GetHashCode Method  int GetHashCode()    
GetType  Method  type GetType()     
ToString Method  string ToString() 

답변

0

입니다 아래에있는 내 코드 샘플입니다. IAsyncResult인터페이스입니다. 클래스는 인터페이스를 구현하며 해당 클래스를 사용하는 모든 사용자는 클래스가 인터페이스에서 지정한 모든 속성/메서드를 갖게됩니다. 이 경우에는 DbAsyncResult이 내부 클래스라고 생각합니다. PowerShell이 ​​속성을 표시하지 않는 이유가 여기에 있습니다. 이상한.

속성을 확인할 수 없습니다에도 불구하고,이처럼 기다릴 수

$state = $command.BeginExecuteNonQuery() 
while(-not $state.IsCompleted) 
{ 
    Start-Sleep -Milliseconds 100 
}