|
m.otte wrote: What it does do is quit after the first image.
As far as I can see it has something to do with the threading as it finishes the program (stop in the program.cs at the call to Form1) when it checks if (BeginInvoke)...
check the imageCounter is not greater than numOfImages (or what ever check it was that causes application.Exit();
if your thread is failing you wont get debug errors, you need to put debug messages in yourself to test.
Try running it on same thread and see if any error messages
My opinion is... If someone has already posted an answer, dont post the SAME answer
|
|
|
|
|
It doesn't reach the app.exit! I checked.
Trying to run it in the same thread causes the Cross Thread error to pop up as soon as the execution reaches the size update of the picturebox.
|
|
|
|
|
how can you get a crossthread error if you only using one thread?
My opinion is... If someone has already posted an answer, dont post the SAME answer
|
|
|
|
|
As far as I understand, the Timer has a thread and the Form has.
I might be wrong, but then I don't know where the other thread comes from.
|
|
|
|
|
As i said i only new the Forms.Timer which the tick event does not cause another thread.
If your timer is having another thread, then you may be getting a cross-thread error you dont know about while using the other thread in your application (as said, errors will not show in thread other than main) does that make sense?
My opinion is... If someone has already posted an answer, dont post the SAME answer
|
|
|
|
|
|
with a paintEvent method, the timer should set a global scale value, and then call the panel.Invalidate() method
the paint event should, draw the required image using the global scale value and other positioning calculations
My opinion is... If someone has already posted an answer, dont post the SAME answer
|
|
|
|
|
Mmm, I see. Interesting. Will try it and am curious what it will do to the timing?
Thanks
|
|
|
|
|
Right. If you want specific actions with images, don't rely on PictureBoxes; use some drawing surface and paint the stuff yourself. Panels are ideal for such purposes.
Luc Pattyn [Forum Guidelines] [My Articles]
- before you ask a question here, search CodeProject, then Google
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get
- use the code block button (PRE tags) to preserve formatting when showing multi-line code snippets
modified on Friday, February 6, 2009 12:57 PM
modified on Friday, June 10, 2011 11:30 AM
|
|
|
|
|
Thanks for the backup
My opinion is... If someone has already posted an answer, dont post the SAME answer
|
|
|
|
|
Hi,
almost all asynchronous devices including serial ports, timers, etc. use extra threads. All timers except one (Forms.Timer) tick on a separate thread, and are not suited for directly touching any Control. One either needs Control.InvokeRequired + Control.Invoke, or use Forms.Timer
Luc Pattyn [Forum Guidelines] [My Articles]
- before you ask a question here, search CodeProject, then Google
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get
- use the code block button (PRE tags) to preserve formatting when showing multi-line code snippets
modified on Friday, June 10, 2011 11:31 AM
|
|
|
|
|
Hey everybody... I got a question for advanced C# programmers. I've been playing around with type constraints for template classes, and I got stuck.
I used [ and ] instead of < and > for template classes because I wanted to have HTML code for you to see better what code I got.
In the C# 3.0 specification (and I will quote directly from Microsoft's document), it's said that this will work:
class B[T] where T: IEnumerable {...}
class D[T]: B[T] where T: IEnumerable {...}
class E[T]: B[List[T]] {...}
Because (so they say):
"Since type parameters are not inherited, constraints are never inherited either. In the example below, D needs to specify the constraint on its type parameter T so that T satisfies the constraint imposed by the base class B[T]. In contrast, class E need not specify a constraint, because List[T] implements IEnumerable for any T."
Now... I put this pre into VS 2008 and the compiler won't work. My pre:
class B[T] where T : IEnumerable[T] { }
class D[T] : B[T] where T : IEnumerable[T] { }
class E[T] : B[List[T]] { }
Error:
"Error 1 The type 'System.Collections.Generic.List[T]' cannot be used as type parameter 'T' in the generic type or method 'FunFollAdmin.frmMain.B[T]'. There is no implicit reference conversion from 'System.Collections.Generic.List[T]' to 'System.Collections.Generic.IEnumerable[System.Collections.Generic.List[T]]'. D:\Order\A1.FunFoll Administrator [FFA]\2009-01-25\FunFollAdmin\frmMain.cs 46 10 FunFollAdmin"
Even more......... not even this works:
B[test] test = new B[test]();
Error:
"Error 1 The type 'FunFollAdmin.frmMain.test' cannot be used as type parameter 'T' in the generic type or method 'FunFollAdmin.frmMain.B[T]'. There is no implicit reference conversion from 'FunFollAdmin.frmMain.test' to 'System.Collections.Generic.IEnumerable[FunFollAdmin.frmMain.test]'. D:\Order\A1.FunFoll Administrator [FFA]\2009-01-25\FunFollAdmin\frmMain.cs 216 9 FunFollAdmin
Error 2 The type 'FunFollAdmin.frmMain.test' cannot be used as type parameter 'T' in the generic type or method 'FunFollAdmin.frmMain.B[T]'. There is no implicit reference conversion from 'FunFollAdmin.frmMain.test' to 'System.Collections.Generic.IEnumerable[FunFollAdmin.frmMain.test]'. D:\Order\A1.FunFoll Administrator [FFA]\2009-01-25\FunFollAdmin\frmMain.cs 216 28 FunFollAdmin"
Even though I have implemented the class test correctly:
class test : IEnumerable[int]
{
public test () { }
#region IEnumerable[int] Members
public IEnumerator[int] GetEnumerator ()
{
throw new NotImplementedException();
}
#endregion
#region IEnumerable Members
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator ()
{
throw new NotImplementedException();
}
#endregion
}
|
|
|
|
|
The compiler is right. You wrote where T : IEnumerable[T] : this means that T must be an enumeration of itself!
Note that the MSDN sample uses the non-generic version of IEnumerable (where T : IEnumerable ), meaning that T can be any enumeration.
modified on Friday, February 6, 2009 10:10 AM
|
|
|
|
|
Note that the MSDN sample uses the non-generic version of IEnumerable (where T : IEnumerable[T]), meaning that T can be any enumeration.
You mean where T : IEnumerable
Ok but how do you declare it so? Because if I declare it so, it says
Error 1 Using the generic type 'System.Collections.Generic.IEnumerable<t>' requires '1' type arguments D:\Order\A1.FunFoll Administrator [FFA]\2009-01-25\FunFollAdmin\frmMain.cs 48 33 FunFollAdmin</t>
I used the code directly from MSDN
interface IMyInterface<br />
{<br />
}<br />
<br />
class Dictionary[TKey, TVal]<br />
where TKey : IComparable, IEnumerable<br />
where TVal : IMyInterface<br />
{<br />
public void Add (TKey key, TVal val)<br />
{<br />
}<br />
}
Same error as above!!! I don't get it! Oh boy......... ::- (
Error 1 Using the generic type 'System.Collections.Generic.IEnumerable<t>' requires '1' type arguments D:\Order\A1.FunFoll Administrator [FFA]\2009-01-25\FunFollAdmin\frmMain.cs 48 33 FunFollAdmin</t>
|
|
|
|
|
You mean <code>where T : IEnumerable</code> Yes, I mistyped. Corrected now.
You must add using System.Collections in order to use the non-generic version of IEnumerable (or you use its full name: where T : System.Collections.IEnumerable ).
|
|
|
|
|
Ah, damn. I had using System.Collections.Generic; but not using System.Collections;
Thank you Mirko! ::- )
That fixed it.
|
|
|
|
|
You welcome
|
|
|
|
|
hi friends
i want to implement a logic .. string input will be given...it should merge only single characters..pls help
eg.. behind r m d street
o/p expected is behind rmd street
any body help me out with apt logic......
the quieter u become more u hear
|
|
|
|
|
how bout a function along the lines of the following
string MergeFunction(string value)
{
result = value;
for(int i = 0; i < value.length; i++)
{
if(value[i-1] == ' ' && value[i+1] == ' ')
{
result = result.remove(i+1, 1);
}
}
return result;
}
dont forget you also need to include some check for handling if i == 0; or i == value.length -1;
because it will throw a index out of bounds error as it is.
EDIT: oops you will need some sort of count for the number of spaces currently remove so you can subtract it from the value when using result.remove
result.remove(i+1-count, 1);
My opinion is... If someone has already posted an answer, dont post the SAME answer
|
|
|
|
|
can u give me the entire code with my given input.... pls...
it shows out of bound error even i do as u said...
pls help me out
the quieter u become more u hear
|
|
|
|
|
Ok as its not too much code, though im not testing so let me know any errors
string MergeFunction(string s)
{
string result = s;
int count 0;
for(int i = 0; i < s.Length-1; i++)
{
if(i == 0)
{
if(s[i+1] == ' ')
{
result = result.Remove(i+1-count, 1);
count++;
}
}
else
{
if(s[i-1] == ' ' && s[i+1] == ' ')
{
result = result.Remove(i+1-count, 1);
count++;
}
}
}
return result;
}
My opinion is... If someone has already posted an answer, dont post the SAME answer
|
|
|
|
|
using System;
using System.Collections;
class chapter10
{
static void Main()
{
string result = "s y t y i";
int count= 0;
for(int i = 0; i < result.Length-1; i++)
{
if(i == 0)
{
if (result[i + 1] == ' ')
{
result = result.Remove(i+1-count, 1);
count++;
}
}
else
{
if (result[i - 1] == ' ' && result[i + 1] == ' ')
{
result = result.Remove(i+1-count, 1);
count++;
}
}
}
Console.WriteLine( result);
}
}</summary></summary>
this is my modified code.... but it checks only first and second char....wat should i do now.... pls specify changes alone in bold letter...
thanks u very much for ur help
the quieter u become more u hear
|
|
|
|
|
lawrenceinba wrote: string result = "s y t y i";
Should be :-
string s = "s y t y i";//you need an original instance, not just the result instance
string result = s;
lawrenceinba wrote: if (result[i + 1] == ' ')//check if next char is a space
Should be :- s[i + 1] == ' '
lawrenceinba wrote: if (result[i - 1] == ' ' && result[i + 1] == ' ')//
Should be :- s[i - 1] == ' ' && s[i + 1] == ' '
but please make it a seperate function and call it from within your main, its much better practise i.e.
string result = MergeFunction("s y t y i");
My opinion is... If someone has already posted an answer, dont post the SAME answer
|
|
|
|
|
There's a one-liner for everyting.
text = Regex.Replace(text, @"\b([^ ]) (?=[^ ]\b)", "$1");
Despite everything, the person most likely to be fooling you next is yourself.
|
|
|
|
|
input= " s y t b/d y i yt"
according to ur code it give out sytb/d yi yt
only single characters should be joined what should i do now
if it has any delimiters it should not be joined... delimiters are (!#&*;/)
thanks
the quieter u become more u hear
|
|
|
|