`

C# 实现文件锁

    博客分类:
  • C#
c# 
阅读更多
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace FileTokenNotWork
{
    public partial class Form1 : Form
    {
        FileStream fs = null;
        int count = 0;
        public Form1()
        {
            InitializeComponent();
        }

        private void btnUpdate_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.ShowDialog();
            filedirtectory.Text = ofd.FileName;

        }

        private void button1_Click(object sender, EventArgs e)
        {
            count++;
            if (count > 1)
            {
                MessageBox.Show("Do not do it again.","Warning",MessageBoxButtons.OK,MessageBoxIcon.Warning);
                return;
            }
            try
            {
                if (string.IsNullOrEmpty(filedirtectory.Text))
                {
                    MessageBox.Show("Not have the file", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    count--;
                    return;
                }
                fs = new FileStream(filedirtectory.Text, FileMode.Open, FileAccess.Read, FileShare.None);
            }
            catch (Exception)
            {
                fs.Close();
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            count--;
            fs.Close();
        }
    }
}

 

namespace FileTokenNotWork
{
    partial class Form1
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.btnUpdate = new System.Windows.Forms.Button();
            this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
            this.filedirtectory = new System.Windows.Forms.TextBox();
            this.groupBox1 = new System.Windows.Forms.GroupBox();
            this.groupBox2 = new System.Windows.Forms.GroupBox();
            this.button1 = new System.Windows.Forms.Button();
            this.button2 = new System.Windows.Forms.Button();
            this.groupBox1.SuspendLayout();
            this.groupBox2.SuspendLayout();
            this.SuspendLayout();
            // 
            // btnUpdate
            // 
            this.btnUpdate.Location = new System.Drawing.Point(175, 20);
            this.btnUpdate.Name = "btnUpdate";
            this.btnUpdate.Size = new System.Drawing.Size(75, 23);
            this.btnUpdate.TabIndex = 0;
            this.btnUpdate.Text = "submit";
            this.btnUpdate.UseVisualStyleBackColor = true;
            this.btnUpdate.Click += new System.EventHandler(this.btnUpdate_Click);
            // 
            // openFileDialog
            // 
            this.openFileDialog.FileName = "openFileDialog";
            // 
            // filedirtectory
            // 
            this.filedirtectory.Location = new System.Drawing.Point(18, 22);
            this.filedirtectory.Name = "filedirtectory";
            this.filedirtectory.Size = new System.Drawing.Size(134, 21);
            this.filedirtectory.TabIndex = 1;
            // 
            // groupBox1
            // 
            this.groupBox1.Controls.Add(this.filedirtectory);
            this.groupBox1.Controls.Add(this.btnUpdate);
            this.groupBox1.Location = new System.Drawing.Point(12, 12);
            this.groupBox1.Name = "groupBox1";
            this.groupBox1.Size = new System.Drawing.Size(268, 65);
            this.groupBox1.TabIndex = 2;
            this.groupBox1.TabStop = false;
            this.groupBox1.Text = "Find file directory";
            // 
            // groupBox2
            // 
            this.groupBox2.Controls.Add(this.button2);
            this.groupBox2.Controls.Add(this.button1);
            this.groupBox2.Location = new System.Drawing.Point(12, 97);
            this.groupBox2.Name = "groupBox2";
            this.groupBox2.Size = new System.Drawing.Size(268, 98);
            this.groupBox2.TabIndex = 3;
            this.groupBox2.TabStop = false;
            this.groupBox2.Text = "lock file";
            // 
            // button1
            // 
            this.button1.Location = new System.Drawing.Point(28, 37);
            this.button1.Name = "button1";
            this.button1.Size = new System.Drawing.Size(75, 23);
            this.button1.TabIndex = 0;
            this.button1.Text = "lock";
            this.button1.UseVisualStyleBackColor = true;
            this.button1.Click += new System.EventHandler(this.button1_Click);
            // 
            // button2
            // 
            this.button2.Location = new System.Drawing.Point(144, 37);
            this.button2.Name = "button2";
            this.button2.Size = new System.Drawing.Size(75, 23);
            this.button2.TabIndex = 1;
            this.button2.Text = "release";
            this.button2.UseVisualStyleBackColor = true;
            this.button2.Click += new System.EventHandler(this.button2_Click);
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(290, 204);
            this.Controls.Add(this.groupBox2);
            this.Controls.Add(this.groupBox1);
            this.Name = "Form1";
            this.Text = "LockFileTool";
            this.groupBox1.ResumeLayout(false);
            this.groupBox1.PerformLayout();
            this.groupBox2.ResumeLayout(false);
            this.ResumeLayout(false);

        }

        #endregion

        private System.Windows.Forms.Button btnUpdate;
        private System.Windows.Forms.OpenFileDialog openFileDialog;
        private System.Windows.Forms.TextBox filedirtectory;
        private System.Windows.Forms.GroupBox groupBox1;
        private System.Windows.Forms.GroupBox groupBox2;
        private System.Windows.Forms.Button button2;
        private System.Windows.Forms.Button button1;
    }
}

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace FileTokenNotWork
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}

 

0
1
分享到:
评论

相关推荐

    C#基于文件锁来限制客户端启动次数

    在C#中,我们可以利用`System.IO.FileStream`类的锁定特性来实现文件锁。以下是一个基本的实现策略: 1. **创建或检查锁文件**:当客户端尝试启动时,首先检查是否存在一个特定的锁文件,如“client_lock.txt”。...

    C#.net Redis分布式锁源码实现

    本篇文章将深入探讨如何在C#.NET环境下利用Redis实现分布式锁,以及相关的核心知识点。 首先,让我们理解什么是分布式锁。分布式锁是在分布式系统中,用于协调不同节点间对共享资源访问的一种工具。它确保在任何...

    C#做的锁电脑软件

    标题中的"C#做的锁电脑软件"指的是使用C#编程语言开发的一种应用程序,它的主要功能是锁定计算机,防止他人在无人看管时使用。C#是一种由微软公司推出的面向对象的编程语言,它被广泛用于Windows桌面应用、游戏开发...

    C# 自定义文件浏览器

    - **源代码**:C#项目的源代码,包括自定义文件浏览器控件的实现,以及可能的其他辅助类和方法。 - **资源文件**:可能包含对话框的UI设计元素,如图片、图标等。 - **示例应用**:一个简单的演示应用程序,展示如何...

    C#判断文件是否被打开

    1. **文件锁检查** 在C#中,可以使用`FileStream`类的尝试打开文件方法(`TryOpenFile()`),如果文件已经被其他进程打开,该方法会返回`false`。这种方法简单直接,但只能检测文件是否被独占式锁定,如果文件被...

    C#使用读写锁三行代码简单解决多线程并发的问题

    为了解决这个问题,我们可以利用C#中的读写锁(ReaderWriterLockSlim)来实现线程同步。本文通过三行代码展示了如何使用读写锁解决多线程并发写入文件的冲突。 读写锁的核心在于,它允许多个线程同时读取资源,但只...

    C# WinForm文件管理系统(终结版)

    学生个人文件管理系统 v2.0 A.声明: 1.非源代码。 2.有些用户没有设置自己的数据库服务器就直接登录或者注册,这样是不会成的, 请选择自定义服务器,然后填入自己的IP,数据库用户名以及密码,因为默认服 ...

    C#挂机锁源码

    下面我们将深入探讨挂机锁的概念、C#中的实现方式以及与之相关的多线程知识。 挂机锁,也称为互斥锁或Mutex,它的主要作用是在多线程应用中提供独占访问控制。当一个线程获得了挂机锁,其他试图获取该锁的线程将被...

    电梯调度系统C#实现

    综上所述,"电梯调度系统C#实现"项目涵盖了C#编程、面向对象设计、算法设计、并发控制、用户界面开发等多个IT领域的重要知识点。通过深入理解和实践这些内容,开发者可以构建出高效、稳定的电梯调度系统。

    屏幕挂机锁(C#实现)

    屏幕挂机锁是一种实用...总的来说,"屏幕挂机锁(C#实现)"项目涵盖了C#编程、Windows API交互、图形用户界面设计、密码管理、事件驱动编程、安装程序制作等多个方面,是学习和提升C#桌面应用开发技能的良好实践案例。

    C# 开发的挂机锁,用到了键盘钩子

    在提供的压缩包文件"Lock"中,可能包含了实现上述功能的C#源代码文件。通过分析和学习这段代码,开发者可以更深入地理解如何在C#中利用键盘钩子实现挂机锁。此外,这也可以作为进一步研究Windows API编程、进程间...

    C#挂机锁 野蛮挂机锁

    当挂机锁启动时,它会结束这个进程,这样用户就无法通过常规方式与桌面进行交互,从而实现对键盘输入的屏蔽。这种做法可以防止他人在挂机时通过键盘快捷键(如Alt+Tab切换窗口或Win+D显示桌面)来干扰挂机状态。 接...

    C#挂机锁程序源码C#挂机锁程序源码

    【C#挂机锁程序源码】是一种使用C#编程语言编写的软件应用程序,它的主要功能是实现“挂机锁”,即锁定计算机的状态,防止在用户离开时他人未经许可的操作。这种程序通常用于保护个人隐私或公司数据安全,确保只有...

    用C#实现HTTP协议下的多线程文件传输

    【知识点详解】 ...它是一个无状态、基于请求与...总的来说,用C#实现HTTP协议下的多线程文件传输,涉及到HTTP协议的理解、C#的网络编程以及多线程技术的应用。通过合理地组织代码,可以构建出高效、可靠的文件下载工具。

    C# 简易文件同步工具

    本篇文章将深入探讨如何利用C#实现简易文件同步工具,并讨论相关的核心知识点。 首先,我们需要理解文件同步的基本概念。文件同步是指将一个或多个文件夹中的文件和子文件夹与另一个位置保持一致的过程。这通常涉及...

    C#实现svn签入签出

    本篇将详细介绍如何使用C#来实现SVN的签入(Commit)和签出(Checkout)操作,以及涉及到的相关知识点。 首先,要实现C#与SVN的交互,我们需要一个能够与SVN通信的库。最常用的是SharpSVN,这是一个开源的C#接口,...

    C# 当在文件拷贝后,再接着后面操作 ,会提示文件被占用 ,导致后面的操作异常

    如果文件仍然被占用,可以使用`FileOptions.Asynchronous`和`FileOptions.WriteThrough`选项创建文件流,这将使文件操作更高效且减少文件锁的持续时间。例如: ```csharp FileStream sourceStream = new FileStream...

    C# Winform 屏幕锁

    总的来说,创建C# Winform屏幕锁涉及到了用户界面设计、事件驱动编程、进程控制、权限管理等多个方面。通过学习和实践,开发者不仅可以掌握这些技能,还能更好地理解Windows应用程序开发的底层原理。

    C#仿手机九宫格解锁

    在本文中,我们将深入探讨如何使用C# Winform来实现一个仿手机九宫格解锁功能。九宫格解锁是移动设备上常见的用户界面元素,它允许用户通过连接一系列预设的数字来解锁屏幕。让我们逐步解析这个项目的核心知识点。 ...

    C#的屏幕锁

    在提供的压缩包文件“锁”中,可能包含了实现上述功能的源代码。初学者可以通过阅读和理解这些代码,了解C#屏幕锁的实现过程,也可以根据自己的需求进行修改和扩展,比如增加验证码、指纹识别等高级功能。 总之,...

Global site tag (gtag.js) - Google Analytics