473,372 Members | 1,048 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,372 software developers and data experts.

Thread won't start...

I am completely baffled. I am writting a daemon application for my
work to save me some time. The application works fine at my home but
won't work right here at work. Basically I have a MainForm what has a
Start/Stop button that starts and stops the processing thread.

private void StartButton_Click(object sender, System.EventArgs e)
{
if( bStopSignal )
{
// disable controls that aren't valid when running
StartButton.Enabled = false;
Issue12CheckBox.Enabled = false;
Issue28CheckBox.Enabled = false;
Issue29CheckBox.Enabled = false;

// enable controls that are valid when running
StopButton.Enabled = true;

// start the processing thread
bStopSignal = false;
MessageBox.Show( "Starting Processing Thread" );
(pProcessingThread = new Thread( new ThreadStart( ThreadProc )
)).Start();
}
}
private void StopButton_Click(object sender, System.EventArgs e)
{
// enable controls that are valid when stopped
StartButton.Enabled = true;
Issue12CheckBox.Enabled = true;
Issue28CheckBox.Enabled = true;
Issue29CheckBox.Enabled = true;

// disable controls that aren't valid when stopped
StopButton.Enabled = false;

// stop the processing thread
bStopSignal = true;
if( pProcessingThread != null )
{
MessageBox.Show( "Stopping Processing Thread" );
pProcessingThread.Join();
pProcessingThread = null;
}
}

private void ThreadProc()
{
MessageBox.Show( "Please browse to the issue viewer base URL to
start" );

// temporary code because I am lazy
pWebBrowser.Show(); pWebBrowser.BringToFront();
pWebBrowser.DocumentComplete.Reset();
pWebBrowser.DocumentComplete.WaitOne();
string starturl = pWebBrowser.Document.url;

string member = null;
while( !bStopSignal )
{
}
}

The above are the 3 important functions, the ThreadProc has been
trimmed of the logic in the while block, otherwise no difference from
my code.

When I click the start button I get the message box stating it is
starting the thread but don't get the message from the ThreadProc
function. Stop gives a message that it is stopping. It isn't starting
the thread like it should.

I am wondering if anyone can give me any feedback on possible cause. I
am wondering if I don't have access rights on my computer to start a
thread? Is this possible, if so would the program execute without
informing me it can't start the thread?

Keep in mind I can't debug it here at work because I don't have a
debugger and can't install a debugger.

Jan 30 '06 #1
5 2190
taylorj...@gmail.com wrote:
I am completely baffled. I am writting a daemon application for my
work to save me some time. The application works fine at my home but
won't work right here at work. Basically I have a MainForm what has a
Start/Stop button that starts and stops the processing thread.


Could you post a short but complete program that demonstrates the
problem?
You shouldn't need much to show it. See
http://www.pobox.com/~skeet/csharp/complete.html for what I mean by
that.

Note that your bStopSignal variable *must* be volatile (or a
synchronized property) for your code to be thread-safe.
See http://www.pobox.com/~skeet/csharp/t...latility.shtml for
more on that.

Also note that you shouldn't use UI components created in one thread on
another thread. See
http://www.pobox.com/~skeet/csharp/t...winforms.shtml for more than
that. (My guess is that your web browser is a UI component.) That
probably isn't the problem here (if you aren't seeing the message box
from the start of the other thread) but it may well bite you as soon as
you get past this initial problem.

Jon

Jan 30 '06 #2
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.IO;
using System.Threading;

namespace Issue
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class MainForm : System.Windows.Forms.Form
{
private System.Windows.Forms.Label MemberLabel;
internal System.Windows.Forms.MainMenu MainMenu;
private System.Windows.Forms.MenuItem menuItem1;
private System.Windows.Forms.MenuItem menuItem2;
private System.Windows.Forms.MenuItem menuItem3;
private System.Windows.Forms.MenuItem menuItem4;
private System.Windows.Forms.TextBox MemberTextBox;
private System.Windows.Forms.Button AddButton;
private System.Windows.Forms.ListBox QueuedListBox;
private System.Windows.Forms.StatusBar statusBar1;
private System.Windows.Forms.NotifyIcon NotifyIcon;
private System.ComponentModel.IContainer components;
private System.Windows.Forms.Button StartButton;
private System.Windows.Forms.Button StopButton;
private System.Windows.Forms.GroupBox IssueCloseGroup;
private System.Windows.Forms.CheckBox Issue12CheckBox;
private System.Windows.Forms.CheckBox Issue28CheckBox;
private System.Windows.Forms.CheckBox Issue29CheckBox;
private System.Windows.Forms.MenuItem ImportMenuItem;
private System.Windows.Forms.MenuItem menuItem6;
private System.Windows.Forms.MenuItem ExitMenuItem;
private System.Windows.Forms.OpenFileDialog ImportFileDialog;

// member processing variables
private Thread pProcessingThread;
private bool bStopSignal;
private Queue pMemberQueue;

public MainForm()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();

//
// TODO: Add any constructor code after InitializeComponent call
//

// setup member processing variables
bStopSignal = true;
pMemberQueue = new Queue();
}

/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
/// <summary>
/// </summary>
private void SyncLists()
{
QueuedListBox.Items.Clear();
object[] contents = new object[pMemberQueue.Count];
pMemberQueue.CopyTo( contents, 0 );
QueuedListBox.Items.AddRange( contents );
}
/// <summary>
/// </summary>
private void ThreadProc()
{
MessageBox.Show( "Please browse to the issue viewer base URL to
start" );

string member = null;
while( !bStopSignal )
{
// get the next member
lock( pMemberQueue )
{
if( pMemberQueue.Count < 1 )
{
Thread.Sleep( 100 );
continue;
}
member = (string)pMemberQueue.Dequeue();

// sync the QueuedListBox and pMemberQueue contencts
SyncLists();

///////////////////////////////////////////////////////////
// Busines logic was here
///////////////////////////////////////////////////////////
}
}
}

#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.Resources.ResourceManager resources = new
System.Resources.ResourceManager(typeof(MainForm)) ;
this.MemberLabel = new System.Windows.Forms.Label();
this.MainMenu = new System.Windows.Forms.MainMenu();
this.menuItem1 = new System.Windows.Forms.MenuItem();
this.menuItem2 = new System.Windows.Forms.MenuItem();
this.menuItem3 = new System.Windows.Forms.MenuItem();
this.menuItem4 = new System.Windows.Forms.MenuItem();
this.MemberTextBox = new System.Windows.Forms.TextBox();
this.AddButton = new System.Windows.Forms.Button();
this.QueuedListBox = new System.Windows.Forms.ListBox();
this.statusBar1 = new System.Windows.Forms.StatusBar();
this.NotifyIcon = new
System.Windows.Forms.NotifyIcon(this.components);
this.StartButton = new System.Windows.Forms.Button();
this.StopButton = new System.Windows.Forms.Button();
this.IssueCloseGroup = new System.Windows.Forms.GroupBox();
this.Issue29CheckBox = new System.Windows.Forms.CheckBox();
this.Issue28CheckBox = new System.Windows.Forms.CheckBox();
this.Issue12CheckBox = new System.Windows.Forms.CheckBox();
this.ImportMenuItem = new System.Windows.Forms.MenuItem();
this.menuItem6 = new System.Windows.Forms.MenuItem();
this.ExitMenuItem = new System.Windows.Forms.MenuItem();
this.ImportFileDialog = new System.Windows.Forms.OpenFileDialog();
this.IssueCloseGroup.SuspendLayout();
this.SuspendLayout();
//
// MemberLabel
//
this.MemberLabel.Location = new System.Drawing.Point(8, 8);
this.MemberLabel.Name = "MemberLabel";
this.MemberLabel.Size = new System.Drawing.Size(48, 23);
this.MemberLabel.TabIndex = 0;
this.MemberLabel.Text = "Member";
//
// MainMenu
//
this.MainMenu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[]
{
this.menuItem1,
this.menuItem2,
this.menuItem3,
this.menuItem4});
//
// menuItem1
//
this.menuItem1.Index = 0;
this.menuItem1.MenuItems.AddRange(new
System.Windows.Forms.MenuItem[] {
this.ImportMenuItem,
this.menuItem6,
this.ExitMenuItem});
this.menuItem1.Text = "&File";
//
// menuItem2
//
this.menuItem2.Index = 1;
this.menuItem2.Text = "&Edit";
//
// menuItem3
//
this.menuItem3.Index = 2;
this.menuItem3.Text = "&View";
//
// menuItem4
//
this.menuItem4.Index = 3;
this.menuItem4.Text = "&Help";
//
// MemberTextBox
//
this.MemberTextBox.Location = new System.Drawing.Point(56, 8);
this.MemberTextBox.Name = "MemberTextBox";
this.MemberTextBox.Size = new System.Drawing.Size(168, 20);
this.MemberTextBox.TabIndex = 1;
this.MemberTextBox.Text = "";
//
// AddButton
//
this.AddButton.Location = new System.Drawing.Point(232, 8);
this.AddButton.Name = "AddButton";
this.AddButton.Size = new System.Drawing.Size(50, 23);
this.AddButton.TabIndex = 2;
this.AddButton.Text = "Add";
this.AddButton.Click += new
System.EventHandler(this.AddButton_Click);
//
// QueuedListBox
//
this.QueuedListBox.Location = new System.Drawing.Point(8, 40);
this.QueuedListBox.Name = "QueuedListBox";
this.QueuedListBox.Size = new System.Drawing.Size(272, 108);
this.QueuedListBox.TabIndex = 3;
//
// statusBar1
//
this.statusBar1.Location = new System.Drawing.Point(0, 245);
this.statusBar1.Name = "statusBar1";
this.statusBar1.ShowPanels = true;
this.statusBar1.Size = new System.Drawing.Size(288, 22);
this.statusBar1.TabIndex = 4;
this.statusBar1.Text = "statusBar1";
//
// NotifyIcon
//
// this.NotifyIcon.Icon =
((System.Drawing.Icon)(resources.GetObject("Notify Icon.Icon")));
this.NotifyIcon.Text = "Issue Closing Daemon";
this.NotifyIcon.Visible = true;
this.NotifyIcon.DoubleClick += new
System.EventHandler(this.NotifyIcon_DoubleClick);
//
// StartButton
//
this.StartButton.Location = new System.Drawing.Point(120, 160);
this.StartButton.Name = "StartButton";
this.StartButton.Size = new System.Drawing.Size(160, 32);
this.StartButton.TabIndex = 5;
this.StartButton.Text = "Start";
this.StartButton.Click += new
System.EventHandler(this.StartButton_Click);
//
// StopButton
//
this.StopButton.Enabled = false;
this.StopButton.Location = new System.Drawing.Point(120, 208);
this.StopButton.Name = "StopButton";
this.StopButton.Size = new System.Drawing.Size(160, 32);
this.StopButton.TabIndex = 6;
this.StopButton.Text = "Stop";
this.StopButton.Click += new
System.EventHandler(this.StopButton_Click);
//
// IssueCloseGroup
//
this.IssueCloseGroup.Controls.Add(this.Issue29Chec kBox);
this.IssueCloseGroup.Controls.Add(this.Issue28Chec kBox);
this.IssueCloseGroup.Controls.Add(this.Issue12Chec kBox);
this.IssueCloseGroup.Location = new System.Drawing.Point(8, 152);
this.IssueCloseGroup.Name = "IssueCloseGroup";
this.IssueCloseGroup.Size = new System.Drawing.Size(104, 88);
this.IssueCloseGroup.TabIndex = 7;
this.IssueCloseGroup.TabStop = false;
this.IssueCloseGroup.Text = "Issues to close";
//
// Issue29CheckBox
//
this.Issue29CheckBox.Checked = true;
this.Issue29CheckBox.CheckState =
System.Windows.Forms.CheckState.Checked;
this.Issue29CheckBox.Location = new System.Drawing.Point(8, 64);
this.Issue29CheckBox.Name = "Issue29CheckBox";
this.Issue29CheckBox.Size = new System.Drawing.Size(72, 15);
this.Issue29CheckBox.TabIndex = 2;
this.Issue29CheckBox.Text = "Issue 29";
//
// Issue28CheckBox
//
this.Issue28CheckBox.Checked = true;
this.Issue28CheckBox.CheckState =
System.Windows.Forms.CheckState.Checked;
this.Issue28CheckBox.Location = new System.Drawing.Point(8, 40);
this.Issue28CheckBox.Name = "Issue28CheckBox";
this.Issue28CheckBox.Size = new System.Drawing.Size(72, 15);
this.Issue28CheckBox.TabIndex = 1;
this.Issue28CheckBox.Text = "Issue 28";
//
// Issue12CheckBox
//
this.Issue12CheckBox.Location = new System.Drawing.Point(8, 16);
this.Issue12CheckBox.Name = "Issue12CheckBox";
this.Issue12CheckBox.Size = new System.Drawing.Size(72, 15);
this.Issue12CheckBox.TabIndex = 0;
this.Issue12CheckBox.Text = "Issue 12";
//
// ImportMenuItem
//
this.ImportMenuItem.Index = 0;
this.ImportMenuItem.Text = "&Import File";
this.ImportMenuItem.Click += new
System.EventHandler(this.ImportMenuItem_Click);
//
// menuItem6
//
this.menuItem6.Index = 1;
this.menuItem6.Text = "-";
//
// ExitMenuItem
//
this.ExitMenuItem.Index = 2;
this.ExitMenuItem.Text = "&Exit";
this.ExitMenuItem.Click += new
System.EventHandler(this.ExitMenuItem_Click);
//
// MainForm
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(288, 267);
this.Controls.Add(this.IssueCloseGroup);
this.Controls.Add(this.StopButton);
this.Controls.Add(this.StartButton);
this.Controls.Add(this.statusBar1);
this.Controls.Add(this.QueuedListBox);
this.Controls.Add(this.AddButton);
this.Controls.Add(this.MemberTextBox);
this.Controls.Add(this.MemberLabel);
this.FormBorderStyle =
System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.Menu = this.MainMenu;
this.Name = "MainForm";
this.Text = "Issue Closing Daemon";
this.Resize += new System.EventHandler(this.MainForm_Resize);
this.Closing += new
System.ComponentModel.CancelEventHandler(this.Main Form_Closing);
this.IssueCloseGroup.ResumeLayout(false);
this.ResumeLayout(false);

}
#endregion

/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
// start application
Application.Run( new MainForm() );
}

#region Form Event Handlers

/// <summary>
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void AddButton_Click(object sender, System.EventArgs e)
{
// add member to queue and clear text box
pMemberQueue.Enqueue( MemberTextBox.Text ); MemberTextBox.Clear();

// update the QueuedListBox
SyncLists();
}
/// <summary>
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void MainForm_Closing(object sender,
System.ComponentModel.CancelEventArgs e)
{
// stop the processing thread.
bStopSignal = true;
if( pProcessingThread != null )
pProcessingThread.Join();
}
/// <summary>
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void MainForm_Resize(object sender, System.EventArgs e)
{
// hide the form if minimize requested
if( FormWindowState.Minimized == this.WindowState )
this.Hide();
}
/// <summary>
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void NotifyIcon_DoubleClick(object sender, System.EventArgs
e)
{
// show MainForm and set to appropriate state
this.Show(); this.WindowState = FormWindowState.Normal;
}
/// <summary>
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void StartButton_Click(object sender, System.EventArgs e)
{
if( bStopSignal )
{
// disable controls that aren't valid when running
StartButton.Enabled = false;
Issue12CheckBox.Enabled = false;
Issue28CheckBox.Enabled = false;
Issue29CheckBox.Enabled = false;

// enable controls that are valid when running
StopButton.Enabled = true;

// start the processing thread
bStopSignal = false;
MessageBox.Show( "Starting Processing Thread" );
(pProcessingThread = new Thread( new ThreadStart( ThreadProc )
)).Start();
}
}
/// <summary>
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void StopButton_Click(object sender, System.EventArgs e)
{
// enable controls that are valid when stopped
StartButton.Enabled = true;
Issue12CheckBox.Enabled = true;
Issue28CheckBox.Enabled = true;
Issue29CheckBox.Enabled = true;

// disable controls that aren't valid when stopped
StopButton.Enabled = false;

// stop the processing thread
bStopSignal = true;
if( pProcessingThread != null )
{
MessageBox.Show( "Stopping Processing Thread" );
pProcessingThread.Join();
pProcessingThread = null;
}
}
private void ExitMenuItem_Click(object sender, System.EventArgs e)
{

}

private void ImportMenuItem_Click(object sender, System.EventArgs e)
{
if( ImportFileDialog.ShowDialog() == DialogResult.OK )
{
try
{
using( StreamReader reader = new StreamReader(
ImportFileDialog.FileName ) )
{
string line = null;
while( ( line = reader.ReadLine() ) != null )
{
// add member to queue and clear text box
pMemberQueue.Enqueue( line );
}

// update the QueuedListBox
SyncLists();
}
}
catch( Exception ex )
{
MessageBox.Show( "Exception: " + ex.ToString() );
}
}
}

#endregion Form Event Handlers
}
}

I commented the Icon setting line because I wasn't sure if it was
needed. I can't verify that compiles, it should, all I did was remove
the references to the other forms which aren't valid for this problem.

Thanks for any help, this is driving me nuts.

Jan 30 '06 #3
taylorjonl wrote:

<snip mammoth code>

That's really not short, is it?
From the page I referred you to: "Anything which is unnecessary should be removed."

Do you really believe that there's nothing in the code you posted which
isn't relevant to the question? How about the checkboxes, the text box
etc? As it is, there's far too much code to look through. If you pare
down the code to the bare minimum, you may well find the problem
yourself.

You definitely *do* have a problem calling SyncLists() inside
ThreadProc() though, for the reasons I gave before.
I commented the Icon setting line because I wasn't sure if it was
needed. I can't verify that compiles, it should, all I did was remove
the references to the other forms which aren't valid for this problem.


Why can't you verify that it compiles? Just bring up a command line
with the appropriate variables set (there's a batch file to set them if
you want), cut and paste your code into a text file, and run csc.
That's what I'd be doing, so I don't see what's likely to stop you from
being able to do the same.

Jon

Jan 30 '06 #4
Sorry if I pasted too much code, didn't know how much you wanted.

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.IO;
using System.Threading;

namespace Issue
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class MainForm : System.Windows.Forms.Form
{
private System.ComponentModel.IContainer components;
private System.Windows.Forms.Button StartButton;
private System.Windows.Forms.Button StopButton;

// member processing variables
private Thread pProcessingThread;
private bool bStopSignal;

public MainForm()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();

//
// TODO: Add any constructor code after InitializeComponent call
//

// setup member processing variables
bStopSignal = true;
}

/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
/// <summary>
/// </summary>
private void ThreadProc()
{
MessageBox.Show( "Please browse to the issue viewer base URL to
start" );

string member = null;
while( !bStopSignal )
{
Thread.Sleep( 100 );
}
}

#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.Resources.ResourceManager resources = new
System.Resources.ResourceManager(typeof(MainForm)) ;
this.StartButton = new System.Windows.Forms.Button();
this.StopButton = new System.Windows.Forms.Button();

//
// StartButton
//
this.StartButton.Location = new System.Drawing.Point(120, 160);
this.StartButton.Name = "StartButton";
this.StartButton.Size = new System.Drawing.Size(160, 32);
this.StartButton.TabIndex = 5;
this.StartButton.Text = "Start";
this.StartButton.Click += new
System.EventHandler(this.StartButton_Click);
//
// StopButton
//
this.StopButton.Enabled = false;
this.StopButton.Location = new System.Drawing.Point(120, 208);
this.StopButton.Name = "StopButton";
this.StopButton.Size = new System.Drawing.Size(160, 32);
this.StopButton.TabIndex = 6;
this.StopButton.Text = "Stop";
this.StopButton.Click += new
System.EventHandler(this.StopButton_Click);
//
// MainForm
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(288, 267);
this.Controls.Add(this.StopButton);
this.Controls.Add(this.StartButton);
this.FormBorderStyle =
System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.Name = "MainForm";
this.Text = "Issue Closing Daemon";
this.ResumeLayout(false);

}
#endregion

/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
// start application
Application.Run( new MainForm() );
}
/// <summary>
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void StartButton_Click(object sender, System.EventArgs e)
{
if( bStopSignal )
{
// disable controls that aren't valid when running
StartButton.Enabled = false;

// enable controls that are valid when running
StopButton.Enabled = true;

// start the processing thread
bStopSignal = false;
MessageBox.Show( "Starting Processing Thread" );
(pProcessingThread = new Thread( new ThreadStart( ThreadProc )
)).Start();
}
}
/// <summary>
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void StopButton_Click(object sender, System.EventArgs e)
{
// enable controls that are valid when stopped
StartButton.Enabled = true;

// disable controls that aren't valid when stopped
StopButton.Enabled = false;

// stop the processing thread
bStopSignal = true;
if( pProcessingThread != null )
{
MessageBox.Show( "Stopping Processing Thread" );
pProcessingThread.Join();
pProcessingThread = null;
}
}
}
}

That is the bare minimum and I have compile it. It works as expected.
Something is very wrong in my code. I am going to do another test with
only the WebBrowser control removed as I would expect this to be the
cause.

Sorry about not trying to compile from command line before, I tried to
that from work a while ago and it crashed my system. I don't have any
batch file with the environmental variables but just added csc.exe to
the path and it compiles. If you have this batch file please post it
because if I can compile at work I can find the problem.

Thanks for the help, I will post once I have found a solution.

Jan 30 '06 #5
taylorjonl <ta********@gmail.com> wrote:
Sorry if I pasted too much code, didn't know how much you wanted.
The hint was in the page I linked to :)

<snip>
That is the bare minimum and I have compile it. It works as expected.
Something is very wrong in my code. I am going to do another test with
only the WebBrowser control removed as I would expect this to be the
cause.
Right. Now you've got a minimal base, you can gradually add bits until
it fails.
Sorry about not trying to compile from command line before, I tried to
that from work a while ago and it crashed my system. I don't have any
batch file with the environmental variables but just added csc.exe to
the path and it compiles. If you have this batch file please post it
because if I can compile at work I can find the problem.


There should be one that came with Visual Studio. Look under the Visual
Studio installation directory for vsvars32.bat (VS.NET 2003) or
vcvarsall.bat (VS 2005).

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet Blog: http://www.msmvps.com/jon.skeet
If replying to the group, please do not mail me too
Jan 30 '06 #6

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

0
by: Phil | last post by:
I recently replaced my Toshiba 6100 laptop running XP Pro with a Dell Latitude D810 running XP Pro; since that time an application that I developed over a year ago has stopped working. I am using...
23
by: Jeff Rodriguez | last post by:
Here's what I want do: Have a main daemon which starts up several threads in a Boss-Queue structure. From those threads, I want them all to sit and watch a queue. Once an entry goes into the...
5
by: Serge | last post by:
Hi, I am having a thread hang problem in my c# code. The example on the website: http://csharp.web1000.com/ is a simplified version of my problem. You will see in the form that a...
12
by: Ricardo Pereira | last post by:
Hello all, I have a C# class (in this example, called A) that, in its constructor, starts a thread with a method of its own. That thread will be used to continuously check for one of its...
7
by: Ivan | last post by:
Hi there My work on threads continues with more or less success. Here is what I'm trying to do: Class JobAgent is incharged for some tasks and when it's called it starts thread which performs...
5
by: Doug Kent | last post by:
Hi, I am using a STA thread to run a COM object. On a couple of machines the thread runs fine. On another machine the thread won't start, and no exceptions are thrown. This code is running...
8
by: Jason Chu | last post by:
I have a webpage which uploads a big file onto access db. if the file is say around 30 megs, it'll take around a minute for it to get put into the access db. I didn't want the user to wait for it,...
0
by: Nick | last post by:
hi, I have a asp.net project. I want to start a thread in this project at some point to do some operations on database.Is there a limitation on this thread about how long it could run? Is it...
0
by: Yue Fei | last post by:
I have a multi thread python code, threads can start immediately if I run on command line, but I can get them started right the way if I call the same code from C/C++. test code like this: from...
1
by: CloudSolutions | last post by:
Introduction: For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome former...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.