【发布时间】:2020-02-07 10:58:11
【问题描述】:
我想以设定的线程数(即 4 个线程)向事件中心发送消息列表。我希望消息同步发送。问题是,当我尝试打印有效负载时,由于某种原因,它在第二次迭代之后没有打印出线程名称,即 1、2、3 和 0。是不是我做错了什么?
Thread 1 - Sending message 1
Thread 2 - Sending message 1
Thread 3 - Sending message 1
Thread 0 - Sending message 1
Thread - Sending message 2
Thread - Sending message 2
Thread - Sending message 2
Thread - Sending message 2
Thread - Sending message 3
Thread - Sending message 3
Thread - Sending message 3
Thread - Sending message 3
public static void Main(string[] args)
{
for (int i = 0; i < numberOfDevices; i++)
{
Thread thread = new Thread(() => { SendMessage(data); });
thread.Name = i.ToString();
listOfThreads.Add(thread);
}
}
private static void StartThreads(List<Thread> lstThreads)
{
foreach (Thread th in lstThreads)
{
th.Start();
}
}
private static void SendMessage(string payload)
{
var connectionStringBuilder = new EventHubsConnectionStringBuilder(EventHubConnectionString)
{
EntityPath = EventHubName
};
eventHubClient = EventHubClient.CreateFromConnectionString(connectionStringBuilder.ToString());
SendMessagesToEventHub(payload);
eventHubClient.Close();
}
private static void SendMessagesToEventHub(string payload)
{
for (var i = 0; i < numberOfMsgs; i++)
{
try
{
var message = $"Message: {payload}";
Console.WriteLine($"Thread {Thread.CurrentThread.Name} - Sending message {i + 1}");
eventHubClient.SendAsync(new EventData(Encoding.UTF8.GetBytes(message)));
}
catch (Exception exception)
{
Console.WriteLine($"{DateTime.Now} > Exception: {exception.Message}");
}
Task.Delay(interval);
}
}
【问题讨论】:
标签: c# asp.net azure asp.net-core azure-eventhub