1 Answer
- Newest
- Most votes
- Most comments
1
Hi, This appears to be related to the way that the threading is being handled with .NET WinForms. I just reproduced your result with a quick sample project, and then found an alternate way to handle publishing the messages that works, while still not blocking the UI thread. I basically made the PublishMessageHandler103 method itself synchronous, but then invoked with it Task.Run from the button handler (the handler itself runs in the UI thread), and awaited the result (and then set the text property of a textbox to the result). This works, and doesn't block the UI.
Here is my form designer code's button handler:
private async void button1_Click(object sender, EventArgs e)
{
var sns = new SnsTools();
var result = await Task.Run(() =>
{
return sns.PublishMessageHandler103("some message", "msgroup01");
});
txtResult.Text = result;
}
And here is the tweaked version of your method:
public string PublishMessageHandler103(string messageText, string msgGroup)
{
try
{
string topicArn = "arn:aws:sns:us-west-2:012345678901:SampleFifoTopic.fifo";
//var awsCredentials = new Amazon.Runtime.BasicAWSCredentials(accKey, secKey);
var client = new Amazon.SimpleNotificationService.AmazonSimpleNotificationServiceClient();
var request = new PublishRequest
{
TopicArn = topicArn,
Message = messageText,
MessageGroupId = msgGroup
};
var response = client.PublishAsync(request).Result;
Console.WriteLine($"Successfully published message ID: {response.MessageId}");
return $"Message Published: {messageText}";
}
catch (Exception ex)
{
Console.WriteLine("\n\n{0}", ex.Message);
}
return "Hmmm";
}
Relevant content
- asked 5 years ago
- asked a year ago
- Accepted Answerasked 6 months ago
- AWS OFFICIALUpdated a year ago
- AWS OFFICIALUpdated 3 years ago
- AWS OFFICIALUpdated 2 years ago
- AWS OFFICIALUpdated a year ago
Oleg, can you describe what do you mean by "it hangs"? Do you get an error message?