|
Best thing to do would be to post the sub/function that you think is acting slowly (not the whole program) with a little explaination of what you are trying to do with it. Even if I don't have the answer someone else may. Otherwise we can only guess what the problem is.
If you are not sure which sub/function is the problem then try setting some breakpoints and run through your program and see where it is getting hung up.
|
|
|
|
|
private: System::Void tmr_for_move_Tick(System::Object^ sender, System::EventArgs^ e) {
Move_usr();
if(b_usr.pct->Visible == true) Move_bl_usr();
for(int i=0; i<n; i++){
Move_em(i);
if(b_em[i]->pct->Visible == true) Move_bl_em(i);
if(b_usr.pct->Visible == true) Check_hit_em(i);
if(b_em[i]->pct->Visible == true) Check_hit_usr(i);
else if(em[i]->pct->Visible == true) Shooting_em(i);
}
}
private: void Move_em(int i){
if(em[i]->pct->Left + em[i]->step_x > min_x && em[i]->pct->Left + em[i]->step_x < max_x)
em[i]->pct->Left += em[i]->step_x;
else em[i]->step_x *= -1;
if(em[i]->pct->Top + em[i]->step_y > min_y && em[i]->pct->Top + em[i]->step_y <= max_y)
em[i]->pct->Top += em[i]->step_y;
else em[i]->step_y *= -1;
if(em[i]->pct->Left == max_x) em[i]->step_x = - em[i]->step_x;
if(em[i]->pct->Top == max_y - 58) em[i]->step_y = - em[i]->step_y;
if(em[i]->step_x > 0) em[i]->pct->Load("e_r.jpg");
else if(em[i]->step_x < 0) em[i]->pct->Load("e_l.jpg");
if(em[i]->step_y > 0) em[i]->pct->Load("e_d.jpg");
else if(em[i]->step_y < 0) em[i]->pct->Load("e_u.jpg");
}
Other procedures are same, but move different object.
private: object usr, b_usr;
private: static unsigned short int hits = 0;
private: static unsigned short int n = 10;
private: static unsigned short int m = 32;
private: static array<object^>^ em;
private: static array<object^>^ b_em;
ref struct object {
int step_x, step_y;
System::Windows::Forms::PictureBox^ pct;
};
|
|
|
|
|
Hi,
So the form's transparancy is the key factor. Does it have to be transparant ?
And are you using double-buffering ? If not, I would recommend you try it.
|
|
|
|
|
what do you mean saying "double-buffering" ?
-- modified at 10:39 Tuesday 13th March, 2007
I find out what is double-buffering, and added. It really helped. Tank you all for your help.
|
|
|
|
|
There's probably a couple dozen different ways of doing this, each different for different situations. It depends, very specifically, what you mean by "overlap image".
Are you talking about an image in each of two controls? Are you talking about drawing the images yourself? Is transparency involved? What are you doing with these images? Are you doing any painting on them? Stamping an image onto another? The list goes on and on...
Dave Kreskowiak
Microsoft MVP - Visual Basic
|
|
|
|
|
hi friends....
I m developing a windows application in c# in .net framework and i want this application to run at windows start up. Please help me ASA possible
thanks
|
|
|
|
|
Then add it to the start up folder on the programs menu.
|
|
|
|
|
Do you want it to run at Windows Startup or when the user logs in?
If it's when the user logs in, you can add a shortcut to your app to the Startup folder, or run it from the registry's Run key.
If it's when Windows Starts, you'll have to write your app as a Windows Service.
Dave Kreskowiak
Microsoft MVP - Visual Basic
|
|
|
|
|
Which of these will you describe as horizontal(X) and which vertical(Y)?
Best regards,
Paul.
Jesus Christ is LOVE! Please tell somebody.
|
|
|
|
|
Guess and check
Regards,
Thomas Stockwell
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
Visit my homepage Oracle Studios[ ^]
|
|
|
|
|
Hi All !!
Pls help....i dont know much of .NET and have been given an assignment to search files in a server according to filename and extension. The files are stored in StarTeam repository and we have to use a FileCollection object to store the files from Server and search it. I am able to connect to Server and find the directory where the files have been stored..But how to load them into FileCollection, i am not able to get..Please help...
I have written something like--->
<br />
private Borland.StarTeam.FileCollection filecol;<br />
private Borland.StarTeam.Server Server;<br />
private Borland.StarTeam.ServerAdministration ServAdmn;<br />
<br />
private Borland.StarTeam.Folder rtFolder = Server.Projects[0].Views[0].RootFolder;<br />
String strRootPath = rtFolder.Path;<br />
<br />
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo("ServerIpAddress\\" + strRootPath + "\\" );
foreach (System.IO.FileInfo f in dir.GetFiles(filename))<br />
{ <br />
listBox1.Items.Add(f.Name);<br />
}<br />
<br />
Please help how to search files in remote system..Is there any other dedicated method other than System.IO.DirectoryInfo class method's that can fulfil the purpose...
Thanks in advace.
|
|
|
|
|
The remote server path would be formatted like this:
\\serverName\shareName\filePath
or you can use the servers IP address in place of serverName .
Dave Kreskowiak
Microsoft MVP - Visual Basic
|
|
|
|
|
Hi,
I'm searching anyone who like to participate to a new open source project team core , if you are interset , please come here to know more:
http://simorgh.sepantahost.com
I like to discuss more:
m.farshadmehr@sepanta.com
|
|
|
|
|
It would have been nice, if you could have explained a few words about the project. Also, codeproject facilitates URLs to be hyperlinked by pasting it into the textbox.
|
|
|
|
|
|
I want to write a custome disassembler that process a file that comtains diffrent special symbols as seperators like (^,&,| etc.) and the result will be use to make a xml file, that i will furtur use for different purposes.
so has anyone ever done something like this? Can you shred some light for me? Or do you have any suggestion?
Please help and thanks for your input.
|
|
|
|
|
hi sweetdecember102
sorry for my bad english, i hope you unterstand me
you have to do 2 things: (for BizTalk 2006)
1. write a pipeline that receive the inputmessage. than manipulate it. (see code below)
2. write a disassembler that receive the manipulated message and create the xml message. (see code below)
Pipeline for manipulating the inputmessage. RemoveString and ReplaceStringOld are
properties in the class. you can change this properties in the admin console at runtime. this methode replace CR an LF from the inputmessage and return it.
///
/// Implements IComponent.Execute method.
///
/// <param name="pContext" />Pipeline context
/// <param name="pInMsg" />Input message
/// <returns>Original input message
/// <remarks>
/// IComponent.Execute method is used to initiate
/// the processing of the message in this pipeline component.
///
public Microsoft.BizTalk.Message.Interop.IBaseMessage Execute(Microsoft.BizTalk.Component.Interop.IPipelineContext pContext, Microsoft.BizTalk.Message.Interop.IBaseMessage pInMsg)
{
if (Enabled)
{
//Obtain the string of the original message
String inputMessage = string.Empty;
//System.Text.Encoding CurrentEncoding;
using (StreamReader streamReader = new StreamReader(pInMsg.BodyPart.Data, System.Text.Encoding.Default)) //.GetEncoding(this.Encoding)))
{
inputMessage = streamReader.ReadToEnd();
//CurrentEncoding = streamReader.CurrentEncoding;
}
if (RemoveString != null)
{
inputMessage = inputMessage.Replace(RemoveString, String.Empty);
}
if (ReplaceStringOld != null)
{
inputMessage = inputMessage.Replace(ReplaceStringOld, ReplaceStringNew);
}
if (RemoveCR)
{
inputMessage = inputMessage.Replace("\r", "");
}
if (RemoveLF)
{
inputMessage = inputMessage.Replace("\n", "");
}
MemoryStream origms = new MemoryStream(System.Text.Encoding.Default.GetBytes(inputMessage));
origms.Flush();
origms.Position = 0;
pInMsg.BodyPart.Data = origms;
}
return pInMsg;
}
this is the disassembler class methode that receive the manipulated message and return a XML document.
///
/// Builds the interchange from the messages that were added by the previous method.
/// Returns a pointer to the assembled message.
///
/// <param name="pContext" />the current pipeline context
/// <returns>the assembled message instance
public Microsoft.BizTalk.Message.Interop.IBaseMessage Assemble(Microsoft.BizTalk.Component.Interop.IPipelineContext pContext)
{
using (MemoryStream inMemoryStream = new MemoryStream())
{
XmlDocument xmlDocument = new XmlDocument();
Microsoft.BizTalk.Message.Interop.IBaseMessage inmsg = (Microsoft.BizTalk.Message.Interop.IBaseMessage)_inmsgs[0];
byte[] buffer = new byte[inmsg.BodyPart.Data.Length];
inmsg.BodyPart.Data.Read(buffer, 0, buffer.Length);
inMemoryStream.Write(buffer, 0, buffer.Length);
inMemoryStream.Seek(0, SeekOrigin.Begin);
xmlDocument.Load(inMemoryStream);
string messageType = xmlDocument.DocumentElement.NamespaceURI + "#" + xmlDocument.DocumentElement.LocalName;
IDocumentSpec documentSpec = pContext.GetDocumentSpecByType(messageType);
_ffAsmComp.DocumentSpecName = new Microsoft.BizTalk.Component.Utilities.SchemaWithNone(documentSpec.DocSpecStrongName);
}
return _ffAsmComp.Assemble(pContext);
}
regards
|
|
|
|
|
Respected sir /madam,
whic version of the .net compact frame work is needed for developing mobile applications and what are the other files neede with .net compact frame work.
sivakumar
|
|
|
|
|
|
I's like to have a dialog box to browse for folder and select folder path just like OpenFileDialog does for selecting files. ideal to browse network/unc path
The FolderBrowserDialog doesn't allow a user to type in a path, and is generally less usefull. What I'd like is what's used inside Visual Studio to select folders.
any help is appreciated
thanks
Mustafa
http://www.hostukdomain.com
|
|
|
|
|
Hi there,
I've been trying to use multithreading on a socket but without success. Here is what I want to do: I have a socket that is shared by two threads. One of them is continuously blocked on a Receive and the other one sends bytes (asynchronously) through the same socket. However, I can't do both things at the same time. If I have the first thread blocked on a Receive, when I use the other thread to send bytes I get an exception in the former thread saying something that an existing connection was forced to close by remote host...
Any help?
Thanks,
Spulit
|
|
|
|
|
Spulit wrote: and the other one sends bytes (asynchronously)
Post that part of the code.
led mike
|
|
|
|
|
Here is a simplified version ("buffer" is protected by a mutex). The receiving thread is a BackgroundWorker (readSocket method) which is fired over and over again until the thread is cancelled.
SocketRW::SocketRW(unsigned short int port_)
{
Port = port_;
socket = gcnew Socket(AddressFamily::InterNetwork,SocketType::Dgram,ProtocolType::Udp);
socket->Bind(gcnew IPEndPoint(IPAddress::Any, Port));
buffer = gcnew array<unsigned char="">(512);
worker = gcnew BackgroundWorker;
worker->WorkerSupportsCancellation = true;
worker->DoWork += gcnew DoWorkEventHandler(&(SocketRW::readSocket));
worker->RunWorkerCompleted += gcnew RunWorkerCompletedEventHandler(&(SocketRW::fireMsg));
}
void SocketRW::readSocket(Object^ sender, DoWorkEventArgs^ e)
{
int bytesrec;
try{
Array::Clear(buffer, 0, buffer->Length);
bytesrec = socket->Receive(buffer);
}
catch(Exception ^e)
{
// Whenever the other thread sends bytes through this socket, the Receive method above throws an System.Net.Sockets.SocketException with the message I posted above.
}
e->Result = bytesrec;
}
void SocketRW::fireMsg(Object^ sender, RunWorkerCompletedEventArgs^ e)
{
// do stuff with the message in "buffer"
// Need this in order to update the GUI with the correct thread
if (!e->Cancelled)
worker->RunWorkerAsync();
}
|
|
|
|
|
You have identified your problem. If you intend to use a single buffer for sending and receiving, then your receive must not block. Instead of causing the receive thread to not block, use separate buffers for reading and writing. Then you won't need a mutex to control access to the buffer.
Phil
|
|
|
|
|
Hi pbraun,
Thanks for your reply, but of course I'm not using the same buffer for sending and receiving. I just protect the receiving buffer because it is used in the BackgroundWorker method (for the Socket::Receive() method) and in the RunWorkerCompletedEventHandler (which runs in the main thread context, the same thread that is used to send bytes through the socket).
Thanks,
Spulit
|
|
|
|