|
Is Google broken where you are?
Henry Minute
Do not read medical books! You could die of a misprint. - Mark Twain
Girl: (staring) "Why do you need an icy cucumber?"
“I want to report a fraud. The government is lying to us all.”
|
|
|
|
|
oh I need help and I know my English is So So.
Please Helpe me "How I can write on Pictur " Use C# .
Thanks again .
|
|
|
|
|
By manipulating the graphics. I suggest you try this tutorial [^]from the Coding4Fun website. It'll roughly take three hours
Enjoy!
I are troll
|
|
|
|
|
thanks. But I need Code C# to Edit Picture.
thanks a Lot.
|
|
|
|
|
The article explains how to "write text" on a "picture", using C#. I suggest you read it
I are troll
|
|
|
|
|
hi
How to copy some files from one folder to other with multithreading in visual C# or VB?
thx
|
|
|
|
|
Hi,
here is one approach:
1. get it working with a single thread;
2. devise a way to use more than one thread. Keep in mind that the performance bottleneck will not be CPU power, but rather disk I/O and/or memory bus bandwidth.
|
|
|
|
|
Cross post^4
Henry Minute
Do not read medical books! You could die of a misprint. - Mark Twain
Girl: (staring) "Why do you need an icy cucumber?"
“I want to report a fraud. The government is lying to us all.”
|
|
|
|
|
I,m working on a project after searching the web I found a copy class that I have modified the code to meet my need,s when I,m done this will be a backup utility My copy class does a good job of coping file but for me there is one flaw I does not copy every file files that are locked or files in use by another process and it does not copy empty folders this is what I would like to do Is have my copy class copy all file and folers one paticular folder I would like to see it copy. Is all of the window\system32 and all its files. some one please help
Here is my copy class code:
Imports System.Threading
Imports System.IO
Imports System.Security.Permissions.FileIOPermissionAccess
Public Class CopyClass
'This will hold the reference to the client form
Private _clientApp As Form
'Create a delegate method that will map to the CopyThreadMessage method of the client app
Private Delegate Sub CallClientCopy(ByVal ThreadName As String, ByVal FilesRemaining As Long, ByVal Message As String)
'Create a delegate method that will map to the CountThreadMessage method of the client app
Private Delegate Sub CallClientCount(ByVal ThreadName As String, ByVal TotalFiles As Long, ByVal TotalFolders As Long, ByVal Files As Long, ByVal Message As String)
'Create an object for each deletegate
Private _callClientCopy As CallClientCopy
Private _callClientCount As CallClientCount
' Property variables
Private _firstTime As Boolean
Private _fromPath As String
Private _toPath As String
Private _directories As Long
Private _files As Long
Private _copiedFiles As Long
Private _totalFiles As Long
Private _fileName As String
' Constants
Private Const LOG_FILE As String = "BackupLog.txt"
Public Sub New(ByRef ClientApp As Backup)
' Save the reference to the client app
_clientApp = ClientApp
' Assign delegate objects
_callClientCopy = AddressOf ClientApp.CopyThreadMessage
'_callClientCopy = AddressOf ClientApp.CopyThreadMessage
_callClientCount = AddressOf ClientApp.CountThreadMessage
End Sub
Public Sub CopyFiles()
'Do the work of the first thread here
' Give this thread a name
If Thread.CurrentThread.Name = Nothing Then Thread.CurrentThread.Name = "Copy"
' Create a new DirectoryInfo object for from path.
Dim dir As New DirectoryInfo(FromPath)
' Call the GetFileSystemInfos method.
Dim FSinfo As FileSystemInfo() = dir.GetFileSystemInfos
'Copy one file at a time looping until all files are copied
ReallyCopyFiles(FSinfo)
'Call client one last time to signal end of copy
CallClient(Thread.CurrentThread.Name, _copiedFiles, _totalFiles, _directories, "END")
End Sub
Public Sub GetCountData()
'Do the work of the second thread here
' Give this thread a name
If Thread.CurrentThread.Name = Nothing Then Thread.CurrentThread.Name = "Count"
' Create a new DirectoryInfo object for from path.
Dim dir As New DirectoryInfo(FromPath)
' Call the GetFileSystemInfos method.
Dim FSinfo As FileSystemInfo() = dir.GetFileSystemInfos
' Count folder and files
CountFiles(FSinfo)
' Save total files count
_totalFiles = _files
' Send message to client form
CallClient(Thread.CurrentThread.Name, _files, _totalFiles, _directories, "END")
End Sub
Private Sub ReallyCopyFiles(ByVal FSInfo As FileSystemInfo())
' Check the FSInfo parameter.
If FSInfo Is Nothing Then
Throw New ArgumentNullException("FSInfo")
End If
' Iterate through each item.
Dim i As FileSystemInfo
For Each i In FSInfo
Try
' Check to see if this is a DirectoryInfo object.
If TypeOf i Is DirectoryInfo Then
' Cast the object to a DirectoryInfo object.
Dim dInfo As DirectoryInfo = CType(i, DirectoryInfo)
' Iterate (recurse) through all sub-directories.
ReallyCopyFiles(dInfo.GetFileSystemInfos())
' Check to see if this is a FileInfo object.
ElseIf TypeOf i Is FileInfo Then
'save the full path and file name
_fileName = i.FullName
'Get the copy path name only
Dim copypath As String = ToPath & Mid(_fileName, Len(FromPath) + 1, Len(_fileName) - Len(FromPath) - Len(i.Name))
'Create copy path if it does not exist
If Not Directory.Exists(copypath) Then
Directory.CreateDirectory(copypath)
End If
' Get the to path and filename
Dim tofile As String = ToPath & Mid(_fileName, Len(FromPath) + 1)
' Update status info on client
Dim fi As New FileInfo(_fileName)
'Dim Message As String = _directories & fi.Name
Dim Message As String = fi.Name '& " is " & Decimal.Round(CDec(fi.Length / 1048576), 2) & "MB in length."
CallClient(Thread.CurrentThread.Name, _copiedFiles, _totalFiles, _directories, Message)
' if file exists check if file has been updated since last copy
Dim OkayToCopy As Boolean = True
If File.Exists(tofile) Then
If File.GetLastWriteTime(_fileName) = File.GetLastWriteTime(tofile) Then
OkayToCopy = False
End If
End If
' Copy file with overwrite
If OkayToCopy Then File.Copy(_fileName, tofile, True)
' Increment copied file count
_copiedFiles += 1
End If
Catch ex As Exception
' Report error but continue processing
WriteLog(ex.Message.ToString)
End Try
Next i
End Sub
Private Sub CountFiles(ByVal FSInfo As FileSystemInfo())
Static ShowCount As Long = 0
' Check the FSInfo parameter.
If FSInfo Is Nothing Then
Throw New ArgumentNullException("FSInfo")
End If
' Iterate through each item.
Dim i As FileSystemInfo
For Each i In FSInfo
Try
' Check to see if this is a DirectoryInfo object.
If TypeOf i Is DirectoryInfo Then
' Add one to the directory count.
_directories += 1
' Cast the object to a DirectoryInfo object.
Dim dInfo As DirectoryInfo = CType(i, DirectoryInfo)
' Iterate (recurse) through all sub-directories.
CountFiles(dInfo.GetFileSystemInfos())
' Check to see if this is a FileInfo object.
ElseIf TypeOf i Is FileInfo Then
' Add one to the file count.
_files += 1
'display count for first file in every folder then every 200 - for faster performance
Select Case ShowCount
Case 0
' Display count
CallClient(Thread.CurrentThread.Name, _files, _totalFiles, _directories, "")
Case Is >= 200
' Display count
CallClient(Thread.CurrentThread.Name, _files, _totalFiles, _directories, "")
'reset so display is every 200 files in folder
ShowCount = 0
End Select
'Increment show count
ShowCount += 1
End If
Catch ex As Exception
'Record error then continue (like a resume next)
WriteLog(ex.Message.ToString)
End Try
Next i
End Sub
Private Sub CallClient(ByVal ThreadName As String, ByVal Files As Long, ByVal TotalFiles As Long, ByVal Directories As Long, ByVal Message As String)
Select Case ThreadName
Case "Copy"
'Call the delegated method
_clientApp.Invoke(_callClientCopy, ThreadName, Files, Message)
Case "Count"
'Call the delegated method
_clientApp.Invoke(_callClientCount, ThreadName, Files, TotalFiles, Directories, Message)
End Select
'Let the thread sleep before continuing so the client app will have time to be process (1 millisecond is enough)
Thread.Sleep(0)
End Sub
Private Sub WriteLog(ByVal Message As String)
' Create log file
If Not File.Exists(LOG_FILE) Then
Using sw As StreamWriter = File.CreateText(LOG_FILE)
sw.WriteLine("BACKUP LOG FILE STARTED AT: " & DateTime.Now)
sw.WriteLine("================================================")
sw.WriteLine()
sw.Close()
End Using
End If
' Create an instance of StreamWriter to write text to a file.
Using sw As StreamWriter = New StreamWriter(LOG_FILE)
' Add some text to the file.
sw.WriteLine()
sw.WriteLine("TIME OF LOG ENTRY: " & DateTime.Now)
' Arbitrary objects can also be written to the file.
sw.WriteLine(Message)
sw.Close()
End Using
End Sub
Private Property FirstTime() As Boolean
Get
Return _firstTime
End Get
Set(ByVal value As Boolean)
_firstTime = value
End Set
End Property
Public Property FromPath() As String
Get
Return _fromPath
End Get
Set(ByVal value As String)
_fromPath = value
End Set
End Property
Public Property ToPath() As String
Get
Return _toPath
End Get
Set(ByVal value As String)
_toPath = value
End Set
End Property
Public ReadOnly Property Directories() As Long
Get
Return _directories
End Get
End Property
Public ReadOnly Property Files() As Long
Get
Return _files
End Get
End Property
Public ReadOnly Property TotalFiles() As Long
Get
Return _totalFiles
End Get
End Property
End Class
|
|
|
|
|
sorry Iam in the wrong forum Please fogive me
|
|
|
|
|
Hi,
I have Nikon coolpix s7c camera.I wrote a C# program using Windows Image Acquisition. In that program, when camera is connected to the computer, Program takes picture on Button events which I set up using the API WIA.dll.
When the camera is connected to the computer, the shutter release button is totally unresponsive.
I want to give the users both options for taking picture, either programmatically or physically. Programmatic way is working fine, but I don't know how to take picture from camera when it is connected to the computer. I have the respective camera driver installed.
Is there any way I can achieve this using digital camera?
Any help will be greately appreciated.
Veena
|
|
|
|
|
You're going to have to talk to Nikon Support about that one. But, using this as a small thought exercise, I doubt you can do it once the camera is connected to the machine.
|
|
|
|
|
Thanks Dave!!!
I did contact Nikon support. This feature is in D-SLRs. I downloaded the SDKs from NIkon.But
I did not find any working example in C#. If someone could send me a link to C# example, It will be a great help.
Veena
|
|
|
|
|
I've derived a PictureBox class to handle some drawing and mouse handling functionality. Now I'm trying to add some key press event handling, but the events never appear to be fired.
The OnMouseDown override was straightforward. Is the OnKeyDown for the PictureBox somehow different?
In the derived PictureBox constructor I set ControlStyles.Selectable to true, but that
didn't help.
As a test, I tried overriding ProcessKeyMessage, but that didn't appear to work either.
The derived PictureBox's parent form had an OnKeyDown event handler, but I commented that out to be sure it wasn't intervening, but that didn't make a difference.
Thanks for any help.
|
|
|
|
|
Is there a particular reason that you are using a PictureBox ?
The reason I ask is that you can draw on almost all .NET controls, and keyboard handling is well documented for them.
Henry Minute
Do not read medical books! You could die of a misprint. - Mark Twain
Girl: (staring) "Why do you need an icy cucumber?"
“I want to report a fraud. The government is lying to us all.”
|
|
|
|
|
I actually need to load an image file into the control and I use the mouse to control mark-up on the image. I wanted to use the keys to toggle properties of the control (e.g., how this mark-up is displayed).
I can catch the key presses in the parent form and change the derived PictureBox properties there, but since there are multiple instances of this derived control on the form, this would be cumbersome.
Thanks for the reply.
|
|
|
|
|
Hi,
a PictureBox is a bag of problems as soon as you want it to do more than just show a picture.
It is a Control, and knows about Keyboard events, but these only work when the Control has focus; maybe you never focused it, or it refuses to focus (would make some sense).
I see two solutions:
1. in your derived Control, add a transparant Panel on top of the PB, and let that handle all the user interaction and markup. May be somewhat tricky.
2. drop the PB, just use a Panel, give it a Paint handler and draw the image yourself. That is a matter of a few lines of code and gets rid of all the trouble once and for all.
|
|
|
|
|
Hi, I would like to use NGen to pre-compile my application (during the installation process). I already read a lot about that. But there are some questions left.
After I have installed the native image of my assembly in the cache - the image will be executed when I start the app.
But what happens if the native image becomes invalid for some reason?
#1: How can my program find out it is not running as native in the assembly cache?
#2: Is it possible to start "ngen update <myApp>" while <myApp> is running? (Will that work?)
I hope someone knows the answers to this questions and hopefully that person is so kind to share his knowledge.
Thanks, Morris
|
|
|
|
|
dyonik wrote: #1: How can my program find out it is not running as native in the assembly cache?
It is ALWAYS running as native. There isn't a processor on this planet that can run MSIL code natively. The JIT compiler detects if the native image is no longer valid for the platform it's running on and will automatically recompile the code and cache a new native image. Your code will never know this happened.
dyonik wrote: #2: Is it possible to start "ngen update <myapp>" while <myapp> is running? (Will that work?)
No, not while the .EXE is running. You'd have to use a seperate update app to do the download and launch the NGEN.
|
|
|
|
|
Hi Dave - Thanks for answering.
Ok point #2 is clear but I think I dit not express my self right in point #1.
What I meant was: How do I find out that the native image is invalid? (Without using Fusion Log Viewer but in a .Net program)
This is necessary so I can update the image if required.
|
|
|
|
|
dyonik wrote: What I meant was: How do I find out that the native image is invalid? (Without using Fusion Log Viewer but in a .Net program)
I'm not convinced you need to deal with this but have you tried renaming the file while it's being used in a process?
|
|
|
|
|
You're not getting it. When your code is running, the native image is ALWAYS valid. If it wasn't, you're code wouldn't be running.
|
|
|
|
|
Dave Kreskowiak wrote: When your code is running, the native image is ALWAYS valid. If it wasn't, you're code wouldn't be running.
Are you sure about that?
If those dependencies change, it invalidates the code in the native image
and the runtime will fail to use the native image, instead reverting to JIT compilation.
link[^]
|
|
|
|
|
led mike wrote: If those dependencies change, it invalidates the code in the native image and the runtime will fail to use the native image, instead reverting to JIT compilation.
Which, a little further down the road, replaces the bad native image with the new one, after the JIT does it's job, of course. He's trying to pre-JIT to native to avoid the delay that happens the first time the JIT has to compile new code.
In his updater .EXE, he can download a new installer and run that, which should be coded to replace the old application and NGEN new images. Other than that, all he has to do to accomplish approximately the same thing is launch the new .EXE and the JIT will compile the parts it needs on the fly, updating the native cache as it goes.
|
|
|
|
|
Dave Kreskowiak wrote: He's trying to pre-JIT to native to avoid the delay that happens the first time the JIT has to compile new code.
Ah, I was missing that completely. I'm not even sure I know what to think of that. Here where I work we would have like 50k problems that would be a higher priority than that one.
|
|
|
|
|