|
In that case, my preference would be to do the following:
Create a queue of some type (Look up "Queue") to which the records to be printed will be added. Also create an auto reset event that can be signaled each time a record is added to the queue. Finally, create and start the print thread.
When the user wants to print, the print process can queue the record and signal the auto reset event that there is a record to print.
The print thread should do the following:
In a loop the thread must wait until signaled.
Check if the application is shutting down and if so, exit the loop.
In a loop, inside the loop mentioned above, pop the first record off the queue and print it until there are no more records in the queue to print.
Of course you will have to lock the queue when adding records and also when popping the records off for printing so that the queue does not get corrupt.
This will allow the printing to occur in a separate thread from the GUI thread which will allow the GUI to respond to user input.
Phil
|
|
|
|
|
Hi all,
i have a problem, i need playing mp3 from stream (stream nor mp3 file from my hdd) but i dont now how .
I hope anybody can help me with this problem.
|
|
|
|
|
I am trying to create a simple I/O program for use with a usb joystick I have. I want it to just respond by showing what input it is receiving, for example displaying "A" if the "A" button is pressed or displaying "up left" if the joystick is held up left. I just need a little help getting started. I am using Visual C# 2005, so if anyone knows how to do this, I would sure appreciate it.
ALEX
-- modified at 13:38 Wednesday 28th February, 2007
|
|
|
|
|
|
Thank you I will look into these sites.
|
|
|
|
|
The easiest way is to use DirectX and it's DirectInput subsystem.
Dave Kreskowiak
Microsoft MVP - Visual Basic
|
|
|
|
|
Webservice returns a method of generic collection type i.e. List<marketvaluetypes.forward>
i.e:
[WebMethod()]
public List<marketvaluetypes.forward> MarketValuesForwardsGet(int intMarketValueTypeID, int intIndexID, DateTime dtDateValue)
{
try
{
return Business.MarketData.MarketValuesForwardsGet(intMarketValueTypeID, intIndexID, dtDateValue);
}
catch
{
throw;
}
}
from the client side i.e. form, I would like to retrieve the collection. This is what I am doing
private void btnMarketValues_Click(object sender, EventArgs e)
{
List<marketvaluetypes.forward> forwards = null;
int intMarketValueTypeID = int.Parse(cboMarketValueTypes.SelectedValue.ToString());
int intIndexID = int.Parse(cboIndices.SelectedValue.ToString());
DateTime dtDateValue = DateTime.Parse(dtpValueDate.Value.ToShortDateString());
private MarketDataService.MarketData wsMarketData;
wsMarketData = new MarketDataService.MarketData();
//this line gives the error
forwards = wsMarketData.MarketValuesForwardsGet(intMarketValueTypeID, intIndexID, dtDateValue);
//
foreach (MarketValueTypes.Forward f in forwards)
{
}
}
The error message is:
Cannot implicitly convert type 'MarketDataService.Forward[]' to 'System.Collections.Generic.List<marketvaluetypes.forward>'
Thanks
|
|
|
|
|
I think you need to read up a little more on generic lists. The defination of a generic list would look like:
List<forward>
You are passing back an array of Forward which is not an generic list. So if you change your List to a List<forward> you will at least be in a little better shape. I have not tried to return a generic list in a web service, so I am not sure what issue may come from that. I know that what ever is returned from a web service needs to be serializeable.
Anyway, hope that helps.
Ben
|
|
|
|
|
Could you please let me know exactly where/what to change this in the code please? i.e. please modify the code.
Thanks
|
|
|
|
|
You don't have all your code listed so I won't be able to make all the changes, but the webmethod should look like this:
[WebMethod()]
public List<forward> MarketValuesForwardsGet(int intMarketValueTypeID, int intIndexID, DateTime dtDateValue)
{
try
{
return Business.MarketData.MarketValuesForwardsGet(intMarketValueTypeID, intIndexID, dtDateValue);
}
catch
{
throw;
}
}
Assuming that your generic collection is of type Forward.
In your MarketValuesForwardsGet you will need to return a List<forward> as well.
Ben
|
|
|
|
|
Apologiese but I think I am doing just that.
may be I am not following you correctly.
Is there anything else from the code you would like me to send you?
Thanks
|
|
|
|
|
Sorry I didn't do the <> signs right so they were removed from my previous post.
You don't have all your code listed so I won't be able to make all the changes, but the webmethod should look like this:
[WebMethod()]
public List<Forward> MarketValuesForwardsGet(int intMarketValueTypeID, int intIndexID, DateTime dtDateValue)
{
try
{
return Business.MarketData.MarketValuesForwardsGet(intMarketValueTypeID, intIndexID, dtDateValue);
}
catch
{
throw;
}
}
Assuming that your generic collection is of type Forward.
In your MarketValuesForwardsGet you will need to return a List<Forward> as well.
Ben
|
|
|
|
|
But this is exactly what I have in the webservice as i explained in the first post. Am I not right?
Thanks
|
|
|
|
|
Perhaps the <Forward> was removed from your orignal post as well?
List
is not the same as
List<Forward>
You error message that you are getting is this:
MarketDataService.Forward[]
That is an array of Forward, not
List<Forward> which is a generic collection.
Sorry about the confusion.
Ben
|
|
|
|
|
Ok, this is what I have:
[WebMethod(Description = "Get MarketValues for ForwardCurves")]
public List<forward> MarketValuesForwardsGet(int intMarketValueTypeID, int intIndexID, DateTime dtDateValue)
{
try
{
return Business.MarketData.MarketValuesForwardsGet(intMarketValueTypeID, intIndexID, dtDateValue);
}
catch
{
throw;
}
}
in the form:
private void btnMarketValues_Click(object sender, EventArgs e)
{
List<forward> forwards = null;
int intMarketValueTypeID = int.Parse(cboMarketValueTypes.SelectedValue.ToString());
int intIndexID = int.Parse(cboIndices.SelectedValue.ToString());
DateTime dtDateValue = DateTime.Parse(dtpValueDate.Value.ToShortDateString());
//error here////
forwards = wsMarketData.MarketValuesForwardsGet(intMarketValueTypeID, intIndexID, dtDateValue);
///
foreach (Forward f in forwards)
{
}
}
|
|
|
|
|
When you posted this did you click the Ignore HTML tags in this message check box at the bottom? If you didn't please check it and post your code again.
Thanks,
Ben
|
|
|
|
|
Hi,
Here it is again. thanks
[WebMethod(Description = "Get MarketValues for ForwardCurves")]
public List<Forward> MarketValuesForwardsGet(int intMarketValueTypeID, int intIndexID, DateTime dtDateValue)
{
try
{
return Codex.Business.MarketData.MarketValuesForwardsGet(intMarketValueTypeID, intIndexID, dtDateValue);
}
catch
{
throw;
}
}
code in the form:
private void btnMarketValues_Click(object sender, EventArgs e)
{
List<Forward> forwards = null;
int intMarketValueTypeID = int.Parse(cboMarketValueTypes.SelectedValue.ToString());
int intIndexID = int.Parse(cboIndices.SelectedValue.ToString());
DateTime dtDateValue = DateTime.Parse(dtpValueDate.Value.ToShortDateString());
//error///
forwards = wsMarketData.MarketValuesForwardsGet(intMarketValueTypeID, intIndexID, dtDateValue);
///erorr
foreach (Forward f in forwards)
{
}
}
|
|
|
|
|
hi, here it is. thanks
[WebMethod(Description = "Get MarketValues for ForwardCurves")]
public List<Forward> MarketValuesForwardsGet(int intMarketValueTypeID, int intIndexID, DateTime dtDateValue)
{
try
{
return Business.MarketData.MarketValuesForwardsGet(intMarketValueTypeID, intIndexID, dtDateValue);
}
catch
{
throw;
}
}
code in the form:
private void btnMarketValues_Click(object sender, EventArgs e)
{
List<Forward> forwards = null;
int intMarketValueTypeID = int.Parse(cboMarketValueTypes.SelectedValue.ToString());
int intIndexID = int.Parse(cboIndices.SelectedValue.ToString());
DateTime dtDateValue = DateTime.Parse(dtpValueDate.Value.ToShortDateString());
forwards = wsMarketData.MarketValuesForwardsGet(intMarketValueTypeID, intIndexID, dtDateValue);
foreach (Forward f in forwards)
{
}
}
|
|
|
|
|
The problem here does not appear to be with your forwards generic declaration, but with your foreach iteration. f is an instance of forwards, and you are trying to process f as if it is the outer container.
|
|
|
|
|
Please note that I did mentioin where the error is. It is not in the loop.
In-fact you can take out the foreach loop.
Thanks
|
|
|
|
|
Yep. Sorry. Saw that later. I first saw the error message and only took a quick glance above. But its interpretation is still the same.
|
|
|
|
|
Excuse me. I erred.
I quickly read the error message and assumed it resulted from the unfurnished code in the iteration, but I see now that you marked the error line. The problem is still the same however (if the error occurs on the line you cite).
As I interpret the error message, the compiler is telling you that your declaration,
List forwards = null;
does not fly with the assignment you ultimately make:
forwards = wsMarketData.MarketValuesForwardsGet(intMarketValueTypeID, intIndexID, dtDateValue);
As the message indicates, you have type incompatibility between the declaration and the assignment. Whatever return value comes from the call to MarketValuesForwardsGet() is not compatible with List. Evidently, the message is further informing you that it expects a generic list declaration.
It's impossible to tell certainly from (only) your code, but I assume the type of the generic list should be Forward, as indicated in your foreach iteration.
Therefore, here's how I assume the compiler wants the statement made. Omit your earlier declaration, as I'd prefer you to adopt a style of declaring types as your code needs them. This habit is conducive to writing better code. Thus at your error line try:
List<Forward> forwards = wsMarketData.MarketValuesForwardsGet(intMarketValueTypeID, intIndexID, dtDateValue);
(If indeed Forward is the type to apply to the generic list.)
If Forward is not the type to declare with your generic declaration (maybe you posted that earlier but the < and/or > were ommitted by the post), then you have to refer to the documentation/code completion for MarketValuesForwardsGet() to get the type of its return value.
|
|
|
|
|
Tried your suggestion but still the same error
|
|
|
|
|
OK. As I wrote in my post, it is impossible for me to tell from just your code snippets just how the declaration has to be written because I cannot research your types. But you have to learn how to do this.
What you have here is a relatively common error. In your professional career (I'm assuming you are a student) you will encounter this error occassionally when you get a bit too casual about matching your type declaration with a return or reference type (etc -- matching one type with another, so that assignments and comparisons can be made). Remember, you are working with a type safe language, and therefore type compatibility is enforced (because it *has* to be).
So what you have to do here is an absolutely obligatory skill. But this is a very routine thing to resolve.
The error is about a type mismatch. It always means that what you are comparing or assigning is not compatible with its counterpart.
As I intimated in my earlier post, if my assumption that Forward was the type to declare (which is only deduced from its presence in your foreach iteration), you have to look up the return type for your method call and declare your list to be that type. Evidently, you (too) are not making the right deduction as to what the necessary type is, or you are not declaring it properly. You will probably have to change it in your foreach iteration when you get it right in the statement above.
The most efficient way to do what you are trying to do *is* indeed to get a reference to the list. The only other alternative is bad practice -- to iterate the list, populating your own -- and this too (of course) will require type matching, so it wouldn't let you off the hook.
You have the tools (libraries) before you to do the research on the type declaration, so we can't help you with that. You have to play with the declaration and/or assignment syntax until you get it right -- and the easiest and fastest way to get it right is to look up the return type for the method call, then see any language rules (which we all need to see when we are students) for how to make the necessary declaration.
|
|
|
|
|
I m making a win form with a explore bar and I want everything I choose from the explore bar to appear in the same form , not opening a new form for each operation.
In Java ,it is easy with using Card layout , but how can it be done in C# ? I tried to set visible for every panel , but if there are too many panels , the form is very messy . I also tried the method BringToFront() but it didn't make better .
How can i change the panel like Card layout in Java?
Thanks .
|
|
|
|