|
You need to instantiate your GlobalDB class (just once!) somewhere before the first use of it. Without that the "global" connection won't exist.
Phil
The opinions expressed in this post are not necessarily those of the author, especially if you find them impolite, inaccurate or inflammatory.
|
|
|
|
|
Hi,
If anybody knows how to load up a Page object form a web address or has any idea about what could be done, please drop a message, even if you don't whant to...
Thx
|
|
|
|
|
What you are asking for is nothing that is normally done. What is it that you are trying to accomplish?
---
single minded; short sighted; long gone;
|
|
|
|
|
I have to extaract data by crawling true a website. I have to somehow get a Page class so I can access Page.Controls collection.
If I'm right, I have a hunch, with HttpWebRwsponse this could be done... still, I din't found a way yet...
|
|
|
|
|
You can only possibly create a Page object for a page if the page is in the same web application. If it's not, you can't.
The HttpWebRequest gets a response from which you can get the html code for the page as a string. The code contains only the html code that is generated, but no information about what server controls was used to generate the code, so you can't recreate any server controls from the response. You have to parse the html code to get the data from the page.
---
single minded; short sighted; long gone;
|
|
|
|
|
Thx for the response, it makes total sens... I hope I can make this somehow work , this tool will be used to trak down bugs by gathering CSS data...
Regards, Mogyi
|
|
|
|
|
Hi,
Can anybody help me how to make a internet dilaer application to connect to the internet?I have gone through some stuff in the net bt i am completely new to this domain.And also need some info abt RasDilaer?
Any help will be appriciated
|
|
|
|
|
Hello ,
Can someone tell me how to send a SOAP resquest and receive a SOAP response.
|
|
|
|
|
Create a WebService project. Mark a method with the attribute WebMethod and compile the project up (having written some code). Import a web reference into your current project. Create an instance of the web service in your code call the web method. It's all taken care of for you.
Deja View - the feeling that you've seen this post before.
|
|
|
|
|
no.no I am asking about SOAP enabled webservice ..i.e we have to post the SOAP request manually and get the response back as a xml.
|
|
|
|
|
Hi
I have an application and I want to keep only one instance running, so I use Mutex class. All works fine until I want to restart that application immediately. It looks that Mutex is not released synchronously with ReleaseMutex() call , but a little while later. My app code looks like :
static void Main()
{
Acquire Mutex
Run main form
Release Mutex
Restart same application using Process.Start(...);
}
When restarting application immediately, Mutex is still owned by old instance, which could not happen id all was synchronized probably...
Question:
How can I wait for the Mutex to be released for sure?
(maybe Thread.Sleep(1000) for a second after Releas call...) ?
thanx for answer
zilo
|
|
|
|
|
I was not able to reproduce your problem. Perhaps you have more than one count on the Mutex?
|
|
|
|
|
I have only one mutex. I've temporary "solved" the problem by sleeping 1000 mls before (re)starting same process (to let Mutex time to Releas )
|
|
|
|
|
Zilo(svk) wrote: I have only one mutex.
Yes I know but you may have a count on it greater than ONE.
Zilo(svk) wrote: I've temporary "solved" the problem by sleeping 1000 mls before (re)starting same process
I did not need to sleep. I suspect you have a bug in your code.
|
|
|
|
|
I have a wrapper class for Mutex described in here
I create one Mutex instance per one application instance, releasing that instance when application finished (before restarting).
logically, i should have a bug somewhere, but where
zilo
|
|
|
|
|
Zilo(svk) wrote: I create one Mutex instance per one application instance, releasing that instance when application finished (before restarting).
Yes, exactly what I tested, and I have no wrapper class because I don't need one to do that.
class MutexTest
{
private Mutex _mut = new Mutex(false, "MutexTest");
public void Run()
{
_mut.WaitOne();
Console.WriteLine("MutexTest has mutex... going to sleep...");
Thread.Sleep(10000);
Console.WriteLine("MutexTest releasing");
_mut.ReleaseMutex();
}
public bool IsLocked()
{
return _mut.WaitOne(0, false);
}
}
class Program
{
static int Main(string[] args)
{
MutexTest mt = new MutexTest();
if (!mt.IsLocked())
Console.WriteLine("Second Instance... exiting");
else
{
mt.Run();
System.Diagnostics.Process.Start("ConsoleRnd.exe");
Console.WriteLine("Complete....");
}
return 0;
}
|
|
|
|
|
Try this one:
<br />
<br />
public class SingleProgramInstance : IDisposable<br />
{<br />
private Mutex __mutex;<br />
private bool __firstInstance = false;<br />
private string __uniqueName = String.Empty;<br />
<br />
private Mutex Mutex<br />
{<br />
get { return __mutex; }<br />
private set { __mutex = value; }<br />
}<br />
<br />
public string UniqueName<br />
{<br />
get { return __uniqueName; }<br />
private set { __uniqueName = value; }<br />
}<br />
<br />
public SingleProgramInstance()<br />
: this(String.Empty)<br />
{ }<br />
<br />
public SingleProgramInstance(string identifier)<br />
{<br />
<br />
this.UniqueName = Assembly.GetExecutingAssembly().GetName().Name + identifier;<br />
<br />
this.Mutex = new Mutex(true, this.UniqueName, out __firstInstance);<br />
}<br />
<br />
~SingleProgramInstance()<br />
{ <br />
this.Dispose();<br />
}<br />
<br />
public bool IsFirstInstance<br />
{<br />
get { return __firstInstance; }<br />
} <br />
<br />
public void Dispose()<br />
{<br />
if (this.IsFirstInstance && this.Mutex != null)<br />
{<br />
this.Mutex.ReleaseMutex();<br />
this.Mutex = null;<br />
<br />
GC.SuppressFinalize(this);<br />
} <br />
} <br />
}<br />
<br />
class Program<br />
{<br />
static void Main(string[] args)<br />
{<br />
using (SingleProgramInstance spi = new SingleProgramInstance("zxy123"))<br />
{<br />
if (spi.IsFirstInstance) <br />
Console.WriteLine("First Instance"); <br />
<br />
else <br />
Console.WriteLine("!!!!! NOT First Instance !!!!!!"); <br />
<br />
spi.Dispose();<br />
}<br />
<br />
Console.ReadKey();<br />
<br />
Process.Start("test73_Mutex.exe");<br />
}<br />
}<br />
<br />
this fails from time to time
zilo
|
|
|
|
|
Zilo(svk) wrote: this fails from time to time
Yes it would. The code in the main() method does not reflect the desired behavior as you described it in your original post. This would also be known as "a bug".
|
|
|
|
|
Can you be more specific ?
looks like I'll use your solution.
Anyway thank you very much!!!
|
|
|
|
|
Zilo(svk) wrote: looks like I'll use your solution.
Oh dear, that's why I don't normally post code. You should only use your solution. This requires your doing the work to understand what you are doing.
Zilo(svk) wrote: Can you be more specific ?
Yes, here is what you said:
Zilo(svk) wrote: I have an application and I want to keep only one instance running
The code in your main() method cannot possibly do that since you release the Mutex at the start of the application rather than right before it ends.
Also:
Zilo(svk) wrote: I have an application and I want to keep only one instance running
Restarting the application from itself just doesn't make any sense. If you want an instance running and you already have an instance running then you have already satisfied that requirement so no action needs to be taken.
|
|
|
|
|
led mike wrote:
Oh dear, that's why I don't normally post code. You should only use your solution. This requires your doing the work to understand what you are doing.
I never use code only by copying it, that's not the way I work. I always try to understand it. That, of course, doesn't mean that I'm going to dig for every method I see in MSDN just to be 110% sure, that's a waste of time. I was satisfied with explanation in article where my code comes from, maybe I missed something ?!
led mike wrote:
The code in your main() method cannot possibly do that since you release the Mutex at the start of the application rather than right before it ends.
I release Mutex after all work is done, that means main application form and all application resources are disposed (which was not in that example to keep it simple), as I wrote in first post. After Mutex is released I can restart application in certain case (not always of course). Obviously I cannot run restarting sequence before Mutex is released.
led mike wrote:
Restarting the application from itself just doesn't make any sense. If you want an instance running and you already have an instance running then you have already satisfied that requirement so no action needs to be taken.
Restarting application makes exactly same sense as restarting windows for instance. When application starts, certain key resources are loaded, that may not be refreshed/reloaded while application runs (for simplicity reasons). I need to keep only one instance because using(modifying) those key resources by two application instances at one time would cause possible errors...
|
|
|
|
|
Zilo(svk) wrote: that may not be refreshed/reloaded while application runs (for simplicity reasons)
What simplicity? You are now complicating the application with this restart scenario to avoid complicating it? You can't have your cake and eat it too. I highly recommend you abandon this hack and solve the problem of refreshing those resources you mentioned.
|
|
|
|
|
Application restart is small price for implementing refreshing scenario. Believe me. I'm not talking about some simple application. Restarts are not meant to occur every day, they are rather occasional, when significant changes are made (adding new sub-applications, refreshing licenses and objects bound to them, etc...)
However, it looks that you're not willing to bless my mind with a reason why it doesn't work my way )
...though, it's been nice talking to you. What do you do ?
|
|
|
|
|
Zilo(svk) wrote: However, it looks that you're not willing to bless my mind with a reason why it doesn't work my way
At this point I don't think I have ever understood what you have said. When I run your code it behaves exactly as I expect it would. My code behaves differently because it is different.
In both cases the usage of the Mutex to verify single instance status works correctly, it is the remainder of the code that is different. Your code correctly identifies that it is a second instance but then continues to launch another instance prior to exiting. My code correctly identifies that it is a second instance and exits directly without launching another instance.
|
|
|
|
|
I disagree
Lets talk in steps :
Assuming:
Mutex is identified by unique name, which only my app knows and uses.
If I dont get Mutex ownership immediately, I don't wait for it (Mutex.WaitOne()), that means I don't have anything to Release.
1. Very first app launch, try to get ownership of Mutex, receives it because Mutex is not owned by any other processes.
2. Do whatever app does.
3. Release Mutex ownership. At this point, there should be no Mutex ownership.
4. Restart app.
5. Starting second app instance. If Mutex was previously released correctly and no other same app's are running (the first one may be still running but Mutex was released), I should receive Mutex ownership same way I received it first time. But for some reason, there is still ownership pending from first Launch sometimes. That's my problem.
6. If has ownership -> Step 2. Else -> Let user know that there cannot be more app instances.
7. If has ownership -> Step 3. Else -> Finishing without releasing ownership (which I don't posses).
8. Restart etc...
|
|
|
|