|
using System;
using System.Windows.Forms;
using System.Messaging;
using Harlinn.Messaging.Common;
namespace Harlinn.Messaging.Client2
{
public partial class ClientMainForm : Form
{
private MessageQueue messageQueue;
public ClientMainForm()
{
InitializeComponent();
InitializeQueue();
}
private void InitializeQueue()
{
string queuePath = Constants.QueueName;
if (!MessageQueue.Exists(queuePath))
{
messageQueue = MessageQueue.Create(queuePath);
}
else
{
messageQueue = new MessageQueue(queuePath);
}
messageQueue.Formatter = new BinaryMessageFormatter();
}
private delegate void LogMessageDelegate(string text);
private void LogMessage(string text)
{
if (InvokeRequired)
{
Invoke(new LogMessageDelegate(LogMessage), text);
}
else
{
messageTextBox.AppendText(text + Environment.NewLine);
}
}
private delegate void EnableSendDelegate();
private void EnableSend()
{
if (InvokeRequired)
{
Invoke(new EnableSendDelegate(EnableSend));
}
else
{
sendButton.Enabled = true;
}
}
private void SendMessages(int count)
{
Random random = new Random(count);
string message = string.Format("Sending {0} messages", count);
LogMessage(message);
DateTime start = DateTime.Now;
for (int i = 0; i < count; i++)
{
PayloadType payloadType = (PayloadType)(i % 3);
PayloadBase payload = null;
switch (payloadType)
{
case PayloadType.Bid:
{
PayloadBid bid = new PayloadBid();
bid.Initialize();
payload = bid;
}
break;
case PayloadType.Offer:
{
PayloadOffer offer = new PayloadOffer();
offer.Initialize();
payload = offer;
}
break;
case PayloadType.Trade:
{
PayloadTrade trade = new PayloadTrade();
trade.Initialize();
payload = trade;
}
break;
}
messageQueue.Send(payload);
}
DateTime end = DateTime.Now;
TimeSpan ts = end - start;
message = string.Format("{0} messages sent in {1}", count, ts);
LogMessage(message);
}
private void AsychSendMessages(object countAsObject)
{
int count = (int)countAsObject;
SendMessages(count);
EnableSend();
}
private void sendButton_Click(object sender, EventArgs e)
{
sendButton.Enabled = false;
int count = Convert.ToInt32(messageCountNumericUpDown.Value);
System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(AsychSendMessages), count);
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Chief Architect - Sea Surveillance AS.
Specializing in integrated operations and high performance computing solutions.
I’ve been fooling around with computers since the early eighties, I’ve even done work on CP/M and MP/M.
Wrote my first “real” program on a BBC micro model B based on a series in a magazine at that time. It was fun and I got hooked on this thing called programming ...
A few Highlights:
- High performance application server development
- Model Driven Architecture and Code generators
- Real-Time Distributed Solutions
- C, C++, C#, Java, TSQL, PL/SQL, Delphi, ActionScript, Perl, Rexx
- Microsoft SQL Server, Oracle RDBMS, IBM DB2, PostGreSQL
- AMQP, Apache qpid, RabbitMQ, Microsoft Message Queuing, IBM WebSphereMQ, Oracle TuxidoMQ
- Oracle WebLogic, IBM WebSphere
- Corba, COM, DCE, WCF
- AspenTech InfoPlus.21(IP21), OsiSoft PI
More information about what I do for a living can be found at:
harlinn.com or
LinkedIn
You can contact me at
espen@harlinn.no