public void SendMessage(G2GMessageV1 message)
{
mBasicG2GClient = new BasicG2Gv1Client();
mBasicG2GClient.SendMessageCompleted += new EventHandler<SendMessageCompletedEventArgs>(mBasicG2GClient_SendMessageCompleted);
G2GMessageV11 g2gMessageV11
= new G2GMessageV11(message.FileName, message.Reciever,
message.Subject, message.TimeStamp, message.Version, message.Content);
TransactionOptions transOptions = new TransactionOptions();
transOptions.IsolationLevel = IsolationLevel.RepeatableRead;
transOptions.Timeout = new TimeSpan(0, 5, 0);
mTransactionScope = new TransactionScope(TransactionScopeOption.RequiresNew, transOptions);
markookram
Member
26 Points
13 Posts
Re: Running async WCF methods within a WCF transaction?
Nov 24, 2010 01:12 PM|LINK
This is code:
class XXXX
{
private BasicG2Gv1Client mBasicG2GClient;
private TransactionScope mTransactionScope;
bool mTransactionError;
bool mTransactionCompleted;
public void SendMessage(G2GMessageV1 message)
{
mBasicG2GClient = new BasicG2Gv1Client();
mBasicG2GClient.SendMessageCompleted += new EventHandler<SendMessageCompletedEventArgs>(mBasicG2GClient_SendMessageCompleted);
G2GMessageV11 g2gMessageV11
= new G2GMessageV11(message.FileName, message.Reciever,
message.Subject, message.TimeStamp, message.Version, message.Content);
TransactionOptions transOptions = new TransactionOptions();
transOptions.IsolationLevel = IsolationLevel.RepeatableRead;
transOptions.Timeout = new TimeSpan(0, 5, 0);
mTransactionScope = new TransactionScope(TransactionScopeOption.RequiresNew, transOptions);
mBasicG2GClient.SendMessageAsync(g2gMessageV11, mTransactionScope);
mTransactionCompleted = true;
}
private void mBasicG2GClient_SendMessageCompleted(object sender, SendMessageCompletedEventArgs e)
{
bool success = false;
if (e.Error != null)
{
//log
(e.UserState as TransactionScope).Dispose();
OnSendMessageCompleted(success);
}
else
{
try
{
success = true;
}
catch (Exception ex)
{
//log
mTransactionError = true;
}
finally
{
if (mTransactionCompleted && !mTransactionError)
{
(e.UserState as TransactionScope).Complete();
(e.UserState as TransactionScope).Dispose();
}
else
{
(e.UserState as TransactionScope).Dispose();
}
DisposeClient();
OnSendMessageCompleted(success);
}
}
}
}
I used Web ASP.NET MVC client with Async SendController
Thanks