|
Yeah, but the "cros thread operation" is still there
SkyWalker
|
|
|
|
|
hi i have come accross a problem that after the process completed i cannot start the copy process again once it have completed. It complains "The object have been disposed", My question is how can i check if the bw have been stoped and i can start another bw(oR create a new bw)?
I used the GUI to make the bw, it generates this
private BackgroundWorker bw;<br />
...<br />
<br />
this.bw = new System.ComponentModel.BackgroundWorker();<br />
...<br />
this.bw.DoWork += new System.ComponentModel.DoWorkEventHandler(this.bw_DoWork);<br />
this.bw.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.bw_RunWorkerCompleted);<br />
<br />
.....<br />
<br />
<br />
<br />
public static void copyDirectory(string Src, string Dst)
{<br />
String[] Files;<br />
<br />
<br />
fmCopying.StartPosition.Equals("Center");<br />
<br />
<br />
if (Dst[Dst.Length - 1] != Path.DirectorySeparatorChar)<br />
Dst += Path.DirectorySeparatorChar;<br />
if (!Directory.Exists(Dst)) Directory.CreateDirectory(Dst);<br />
Files = Directory.GetFileSystemEntries(Src);<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
foreach (string Element in Files)<br />
{<br />
<br />
fmCopying.Refresh();<br />
<br />
if (Directory.Exists(Element)){<br />
<br />
<br />
<br />
System.Threading.Thread.Sleep(1000);<br />
copyDirectory(Element, Dst + Path.GetFileName(Element));<br />
<br />
fmCopying.Refresh();<br />
fmCopying.lblCopying.Text =Element;<br />
fmCopying.lblCopying2.Text = Dst + Path.GetFileName(Element);<br />
fmCopying.Refresh();<br />
<br />
<br />
<br />
<br />
}
else<br />
{<br />
<br />
<br />
<br />
<br />
<br />
System.Threading.Thread.Sleep(1000); <br />
File.Copy(Element, Dst + Path.GetFileName(Element), true);<br />
fmCopying.Refresh();<br />
fmCopying.lblCopying.Text =Element;<br />
fmCopying.lblCopying2.Text = Dst + Path.GetFileName(Element);<br />
fmCopying.Refresh();<br />
<br />
<br />
}<br />
<br />
}<br />
<br />
<br />
fmCopying.Close();<br />
<br />
<br />
}<br />
<br />
.....<br />
<br />
private void bw_DoWork(object sender, DoWorkEventArgs e)<br />
try<br />
{<br />
<br />
<br />
<br />
<br />
<br />
<br />
copyDirectory(@path, @mapto);<br />
<br />
<br />
<br />
<br />
<br />
<br />
}<br />
catch (Exception err)<br />
{<br />
{<br />
<br />
string errrr = "Error: " + err.Message;<br />
MessageBox.Show(this, errrr, "", MessageBoxButtons.OK, MessageBoxIcon.Error);<br />
<br />
<br />
}<br />
}<br />
<br />
<br />
<br />
<br />
<br />
<br />
bw.WorkerSupportsCancellation = true;<br />
<br />
<br />
<br />
fmCopying.Show();<br />
<br />
<br />
bw.RunWorkerAsync();
* / */
|
|
|
|
|
You can find a lot of coding examples on the net.
This[^] is one of them.
SkyWalker
|
|
|
|
|
View a printable version of this message! I'm working on building a web-based solution (c# + .net) to allow users to
manage AD groups that they have appropriate rights to manage. On all groups
in Active Directory, there is an advanced permission called "Write Members".
If the user (who logged in via a forms based login page) is granted that
permission on the group (either directly or by being a member of a group that
has been granted the necessary permission), they should be able to update the
group membership. The web app has its own user account with enough
permissions to update the group, but I don't know the best way of having it
determine if it should use it's powers to update the membership for the user.
My question: What is the best way to handle this, and is there a way for me
to just pass the user DN (or SID, SAMAccountName, etc), and have AD determine
if it that user is allowed to access that object.
I've found code that should be able to get the user's security token, and
parse the SIDs it contains. I'm assuming I could then take that list of
SIDs, and compare it to the list of users/groups that have Write Members set
to allow on the group in question. This seems ugly/wrong. There are too
many cases where this falls short (i.e. the user is a member of a group that
doesn't have the Write Members permission, but it does have the Write All
Properties permission. It also doesn't effectively check for deny entries.)
It feels like there should be a way for me to simply [programatically] ask AD
if user X has access to update the "member" attribute on a given group.
I am a Systems Engineer and not (yet) a programmer, so a little more verbose
answer is very much appreciated.
Thanks!
|
|
|
|
|
perhaps using LDAP ? My program can allow AD users to change their password by their own.
I'm not sure does this works in your case. You can try.
|
|
|
|
|
Is it possible to put in a Domain an allready loaded Assembly?
The purpose of this project is to load a C# source file, compile it, put it in an AppDomain and execute a function in it...but I googled, searched in the "Object Browser" of VS2005...
Hope someone can help me!
Dan
|
|
|
|
|
Hi,
I'm not a specialist in this matter, but IMO it is not possible; this is how I see it:
- you load an assembly in an AppDomain;
- you can't assign (or move) a loaded assembly to an AppDomain;
- you can't load the same assembly twice;
- to unload an assembly, you have to delete the AppDomain that loaded it.
Luc Pattyn [Forum Guidelines] [My Articles]
This month's tips:
- 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 PRE tags to preserve formatting when showing multi-line code snippets.
|
|
|
|
|
I have a problem with HttpRequest.QueryString.
There is an XML string that contains something like the following: <age>8+
As you probably guessed, the "+" is the problem
I want to get that XML string from QueryString, however, the "+" appears as a " " (space), not a "+".
I have tried the following:
NameValueCollection coll = Request.QueryString;<br />
XMLstring = coll.Get("XMLstr");
XMLstring = Request.QueryString["XMLstr"]; // result: XMLstring = "<age>8 </age>"
XMLstring = Request.QueryString.Get("XMLstr"); // result: XMLstring = "<age>8 </age>"
XMLstring = HttpUtility.HtmlDecode(Request.QueryString["XMLstr"]); // result: XMLstring = "<age>8 </age>"
XMLstring = HttpUtility.HtmlDecode(Request.QueryString.Get("XMLstr")); // result: XMLstring = "<age>8 </age>"
In all of the above cases, XMLstring is a string (string XMLstring = ""; ).
I realise I can just search XMLstring and replace the space with the plus sign. I don't want to do that though. Also, this isn't my code, and I have no idea why XML is in QueryString nor if it should be there, never worked with asp or done web stuff in C#, but it has to stay like this for the moment, and I have to somehow extract that + sign.
Any help or advice is appreciated.
Thanks.
|
|
|
|
|
dfn wrote: never worked with asp or done web stuff in C#,
If this is C#, this is ASP.NET, not asp. And, we have a forum for ASP.NET questions.
Christian Graus
Please read this if you don't understand the answer I've given you
"also I don't think "TranslateOneToTwoBillion OneHundredAndFortySevenMillion FourHundredAndEightyThreeThousand SixHundredAndFortySeven()" is a very good choice for a function name" - SpacixOne ( offering help to someone who really needed it ) ( spaces added for the benefit of people running at < 1280x1024 )
|
|
|
|
|
You can't get the correct value if it's not encoded properly when put in the querystring.
This is how the querystring should look like to be correct:
?XMLstr=8%2b
Despite everything, the person most likely to be fooling you next is yourself.
|
|
|
|
|
I am currently updating old code that was not created by myself in hopes of fixing a minor security problem (I say minor as the configuration files that could be accessed would not give away much but we still want to cover them up). Currently files are being decrypted to a folder in the application data folder and deleted once the program ends, the problem is files may be left around if the program crashes.
My question is, is there a way to create a file (that can be pass to the unzip method as a String) that would be deleted as soon as the program exits or is terminated? The key is that I would like to pass the folder location in by a String to prevent having to update lots of code.
Thanks!
|
|
|
|
|
No. You could do one of three things:
1 - write a service that periodically checks the folder and checks if your app is running, if it's not, empties the folder
2 - delete the file sooner or find a way to deal with it in memory
3 - mark the folder as hidden, and hope that most users won't see it
Christian Graus
Please read this if you don't understand the answer I've given you
"also I don't think "TranslateOneToTwoBillion OneHundredAndFortySevenMillion FourHundredAndEightyThreeThousand SixHundredAndFortySeven()" is a very good choice for a function name" - SpacixOne ( offering help to someone who really needed it ) ( spaces added for the benefit of people running at < 1280x1024 )
|
|
|
|
|
In that case am I better to open the files in a Memory Stream??
|
|
|
|
|
Definately. IF the files end up in your file system, then a determined attacker is bound to find a way to get to them.
Christian Graus
Please read this if you don't understand the answer I've given you
"also I don't think "TranslateOneToTwoBillion OneHundredAndFortySevenMillion FourHundredAndEightyThreeThousand SixHundredAndFortySeven()" is a very good choice for a function name" - SpacixOne ( offering help to someone who really needed it ) ( spaces added for the benefit of people running at < 1280x1024 )
|
|
|
|
|
Even if you kept the files in memory, a determined attacker may be able to find them.
But of course the person would need to know they existed in the first place, and then realise that they are kept in the memory. Anyway...
My current favourite word is: Nipple!
-SK Genius
|
|
|
|
|
Hi All,
I've just wrapped a line of code in a try{}catch{} scenario which has actually created an error in the code itself which I'm unsure how to deal with. Basically i'm creating a list of DirectX sound cards which occasionally creates an exception of there is a problem with the drivers which I wan't to catch.
try
{
Device dSound = new Device();
}
catch (System.Reflection.TargetInvocationException tie)
{
MessageBox.Show("Could not initialise Soundcard!", "DirectSound Error!", MessageBoxButton.OK, MessageBoxImage.Error);
}
WindowInteropHelper wih = new WindowInteropHelper(Application.Current.MainWindow);
dSound.SetCooperativeLevel(wih.Handle , CooperativeLevel.Priority);
the second use reference to dsound now produces an error during compile saying:
The name 'dSound' does not exist in the current context
how is the try{}catch{} moving its context? I'm a bit confused!!
Jammer
Going where everyone here has gone before!
My Blog
|
|
|
|
|
Hi,
a variable is known only inside the enclosing pair of {}, so the way you wrote it dSound
does not exist outside the try block.
a better way is to have Device dSound=null; outside the try block, or
to put everything inside the try block.
Luc Pattyn [Forum Guidelines] [My Articles]
This month's tips:
- 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 PRE tags to preserve formatting when showing multi-line code snippets.
|
|
|
|
|
Schoolboy error! Thanks Luc.
btw I'm slowly inwardly digestion C#3.0 in a nutshell, great book.
Jammer
Going where everyone here has gone before!
My Blog
|
|
|
|
|
Hmm ... I've tried your suggestion and all is compiling correctly now.
I think my solution is going to need some more reading and work tho. The line still creates an exception and halts the program inside the try{}catch{} ... Its throwing a Reflection exception of type TargetInvocationException should these be treated differently than a 'normal' exception?
Jammer
Going where everyone here has gone before!
My Blog
|
|
|
|
|
Hi,
AFAIK a TargetInvocationException is not really different from any other Exception.
BTW: you should not just catch an exception, but also read its ToString() result to
understand what is really going wrong, then improve your code accordingly.
Luc Pattyn [Forum Guidelines] [My Articles]
This month's tips:
- 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 PRE tags to preserve formatting when showing multi-line code snippets.
|
|
|
|
|
Actually I've setup my app to catch and report all exceptions to a system Event log at the moment so I can interrogate it.
Jammer
Going where everyone here has gone before!
My Blog
|
|
|
|
|
hi , Iam using SQL server as back end and i have excel file which should be an input to the process and output should be an fixed length file..read column
by column and spit into fixed length(.txt) file. please need help in this issue
|
|
|
|
|
You need to write code to read your Excel file, using Excel and te Microsoft tools for Office ( or whatever it is called ) and generate your txt file.
Christian Graus
Please read this if you don't understand the answer I've given you
"also I don't think "TranslateOneToTwoBillion OneHundredAndFortySevenMillion FourHundredAndEightyThreeThousand SixHundredAndFortySeven()" is a very good choice for a function name" - SpacixOne ( offering help to someone who really needed it ) ( spaces added for the benefit of people running at < 1280x1024 )
|
|
|
|
|
vihari wrote: how to convert excel files to fixed length files
Open the file for write.
Set the Length to 0.
Close the file.
|
|
|
|
|
All,
A bit of a newbie so be nice!
I have a C# service program that is busy processing files etc
I have a C# Windows program that I want to display in a statuslabel, the current activity of the service. Basically, what file its processing etc etc.
I have looked at a number of ways of using IPC but dont seem to be getting far. First, I looked at Sockets and remoting and made some head way but got in to difficulty if the windows program was closed and then started again. It seems that re-establishing a connection is not easy (at least not for my poor programming skills!)
I then looked into pipes (named and otherwise) but had similar problems to above.
I just want the service to keep broadcasting what its up to, regardless of wether the windows program is running or not. And then if someone starts the windows program, they will get a statuslabel with the current activity of the service.
I then looked at using the clipboard but couldn't get that to work at all, which I thought was odd as it seems to be the easiest one to implement.
Any help greatfully recieved!!!!!
Darin
|
|
|
|