Access single file in multiple threads - vb.net

I am trying to write trace(text file) for my application having multiple threads. Want to know whether it is possible or not. My application is written in VB.Net.
Any help would be appreciated! TIA!

You can't write to the same file at the same time as the file will be locked, you would encounter version problems anyway.
What you would be better doing is creating a single sub that deals with the update of this file and would queue tasks to update it. Although without more information on what you are wanting to accomplish it is difficult to tell. Why are you wanting to use this approach? There may be a better way of going about it.

Use file locking:
http://msdn.microsoft.com/en-us/library/c5kehkcz.aspx
MyFileClass myFile
lock(myFile)
{
// Write to file in here.
}

Related

Is there a way to write to a file while it is being used by another process (a process in ring 0?)

Recently, I've been trying to write to a .PAK file while it is being used by another process in ring 0. This has been a problem for quite a while and i haven't had much success. I am able to use any programming language necessary to accomplish this, but C#/VB.net is preferred. I originally wanted to use a find and replace system when editing, but I will just choose and offset to write to and such instead.
No, I can't just terminate the process then edit; the process must be running. Yes, I obviously know the process with the file handle attached.
No, I can't just run as admin because the process is established in ring 0/the kernel.
I've tried multiple methods including setting the process speed temporarily to 0 to edit then revert, and changing the FileShare and other parameters, none with any success.
One approach which I have been told a lot and which I have no experience in is creating a "Kernel Driver". I'm not sure how to go about this and I cant find much info online so if you think that's is the best method please inform me on how to get started. Any help is appreciated!
Always create a temporary file (a copy of your original file). If you need to process a file within your codes, create a temp file, use the temp file and process that file. So if you need another process, there will be no problem.

Embedding .exe's into a VB.net application

So here's whats up,
I am a Bench Technician for an IT company. I find myself repeating the same task over and over when preforming system reloads. I want to write an application where I have all the programs for a reload in one spot, and call them by a button click event. I have tried adding them into the Resources and calling them by Environment.CurrentDirectory+"\Path" to no avail, I get " System cannot find the file specified. When the path is hard coded it works like a charm, but this will obviously not do as it needs to be able to move to any system. I am looking for a way to add the exe's I need and a generic way to call the path. I am not looking for handouts here, I have done my homework on this one and still not found a solution, If I could get someone to -point me in the right direction, it would be awesome.
Since what you have already tried is much saner and easier for the average user to work with than having the files embedded in another executable, I'll explain that method.
CurrentDirectory is where your executable is executed from, Like this:
C:\MyDir> MyOtherDir\MyProgram.exe
CurrentDirectory refers to C:\MyDir in this example.
What you need is the application directory; and according to top answer of this question the most reliable way to get that is using AppDomain.CurrentDomain.BaseDirectory
EDIT: Also consider using Path.DirectorySeparatorChar instead of \.

Overcoming the 2GB limit with VBA

Is there a way to overcome the 2GB limit of files in VBA ? Before trying to use multiple files controlling them by my own code, I would like to ask for any hints on the topic.
Try using the file system object model (FSO) instead. Specifically, the OpenTextStream method of the File object. I cannot find anything that explicitly says that it can go over 2GB, but lot of places imply it. If you use the ReadLine method of TextStream and all of the lines are under 2GB, it should work.
On the other hand, VBA does have some memory limitations also, so you want to make sure to stream this: don't try to keep all of the lines in memory at once, just one or two at a time.

Ipython QtConsole %edit

When using the magic function %edit from QtConsole with IPython, the call does not block, and does not execute the saved code. It does however save a temporary file...
I think this is intended behavior due to GUI editors and uncertainty, and whatever that reason is for not being able to communicate with subprocess (pyZMQ?).
What do you suggest as the best way to mix %edit/%run magics?
I would not mind calling two different commands (one to edit, and one after I have saved and execution is safe). But those commands need a way to synchronize this target file location, or someone to persist storage, and probably need some crude form of predicatably generating filenames such that you can edit more than one file at a time, and execute in arbitrarily. Session persistence is not a must.
Would writing my own magic do any good? Hope we can %edit macros soon, that would do well enough to make it work.
you shoudl be able to do %edit filename.py and %run filename.py. The non blocking behavior is expected, and IIRC due to technical reason. Not unsurmountable but difficult.
You could define your own magic if you wish, improvement are welcomed.
Hope we can %edit macros soon, that would do well enough to make it work.
For that too, PR are welcomed. I guess as a workaround/option you can %load macro which would put macro on input n+1 , edit it and redefine it, that might be a good extension for a cell magic %%macro macroname
If you have some executable code on your input (from QtConsole), you can type
%edit 1-5
This fires the editor, creates a temporarily file (automatically managed), and loads your input lines. This is nearly enough, now how to retrieve the name of that temp file pragmatically?
I see the print statement on Stdout, but its not visible to QtConsole AFAIK. Could maybe redirect stdout to catch that line, but that may not be an option anyway if your doing something else with stdout.
If I could retrieve the full pathname that was just created, this would be cake. Store it where some magics will know how to find it. Then issue a followup command when ready,pops the name off the stack, loads it into a macro, and run. All this with 2 input commands and no names to remember (unless you want to find and use that macro again, but for 1 shot stuff...)
How do I catch or retrieve the path of that temporary file?

Locked Classes with VBA/VB

I want to package my classes (in VBA or VB), but I want to put a lock on them before I do so. I want the computer to return a message similar to one in the Word file attached. Can anybody point me in the right direction? There doesn’t seem to be a lot of help in this regard.
I would need something that would lock just the classes that I have made while still leaving the rest. My understanding is that the mde would compile the whole works, and therefore would not work. Is that correct?
Could you have 2 projects for 1 mdb file? Then I could allow 1 project to be locked (mine) and then the other to be open to everyone
Marty Habicht
An add-in may suit: http://msdn.microsoft.com/en-us/library/aa902693.aspx
You can create an mde and include it as a refernce in other Access applications (code window, Tools-References).
See my Add-in Tips, Hints and Gotchas page for an Access only answer.
A simple solution would be to put the classes in an mde, and then just set a reference to the MDE from the unlocked project. This will give you access to the class, while rendering your source unviewable. This won't stop a determined reverser, but I don't really think a determined reverser is in the threat model:)