{
get
{
+ CheckDisposed();
if (_standardInput == null)
{
throw new InvalidOperationException(SR.CantGetStandardIn);
{
get
{
+ CheckDisposed();
if (_standardOutput == null)
{
throw new InvalidOperationException(SR.CantGetStandardOut);
{
get
{
+ CheckDisposed();
if (_standardError == null)
{
throw new InvalidOperationException(SR.CantGetStandardError);
if (!_haveProcessHandle)
{
//Cannot open a new process handle if the object has been disposed, since finalization has been suppressed.
- if (_disposed)
- {
- throw new ObjectDisposedException(GetType().Name);
- }
+ CheckDisposed();
SetProcessHandle(GetProcessHandle());
}
}
//Cannot start a new process and store its handle if the object has been disposed, since finalization has been suppressed.
- if (_disposed)
- {
- throw new ObjectDisposedException(GetType().Name);
- }
+ CheckDisposed();
SerializationGuard.ThrowIfDeserializationInProgress("AllowProcessCreation", ref s_cachedSerializationSwitch);
/// </devdoc>
public void CancelOutputRead()
{
+ CheckDisposed();
if (_output != null)
{
_output.CancelOperation();
/// </devdoc>
public void CancelErrorRead()
{
+ CheckDisposed();
if (_error != null)
{
_error.CancelOperation();
}
}
+ /// <summary>Throws a System.ObjectDisposedException if the Proces was disposed</summary>
+ /// <exception cref="System.ObjectDisposedException">If the Proces has been disposed.</exception>
+ private void CheckDisposed()
+ {
+ if (_disposed)
+ {
+ throw new ObjectDisposedException(GetType().Name);
+ }
+ }
+
/// <summary>
/// This enum defines the operation mode for redirected process stream.
/// We don't support switching between synchronous mode and asynchronous mode.
}
[Fact]
+ public void StandardInput_Disposed_ThrowsObjectDisposedException()
+ {
+ var process = new Process();
+ process.StartInfo.FileName = "Nothing";
+ process.Dispose();
+
+ Assert.Throws<ObjectDisposedException>(() => process.StandardInput);
+ }
+
+ [Fact]
+ public void StandardError_Disposed_ThrowsObjectDisposedException()
+ {
+ var process = new Process();
+ process.StartInfo.FileName = "Nothing";
+ process.Dispose();
+
+ Assert.Throws<ObjectDisposedException>(() => process.StandardError);
+ }
+
+ [Fact]
+ public void StandardOutput_Disposed_ThrowsObjectDisposedException()
+ {
+ var process = new Process();
+ process.StartInfo.FileName = "Nothing";
+ process.Dispose();
+
+ Assert.Throws<ObjectDisposedException>(() => process.StandardOutput);
+ }
+
+ [Fact]
+ public void CancelOutputRead_Disposed_ThrowsObjectDisposedException()
+ {
+ var process = new Process();
+ process.StartInfo.FileName = "Nothing";
+ process.Dispose();
+
+ Assert.Throws<ObjectDisposedException>(() => process.CancelOutputRead());
+ }
+
+ [Fact]
+ public void CancelErrorRead_Disposed_ThrowsObjectDisposedException()
+ {
+ var process = new Process();
+ process.StartInfo.FileName = "Nothing";
+ process.Dispose();
+
+ Assert.Throws<ObjectDisposedException>(() => process.CancelErrorRead());
+ }
+
+ [Fact]
[PlatformSpecific(TestPlatforms.Linux | TestPlatforms.Windows)] // Expected process HandleCounts differs on OSX
public void TestHandleCount()
{