public void WhenPathChangesTest()
        {
            //监控文件
            WhenPathChanges("~/c/a.txt", VirtualPathProvider.FileExists, s => VirtualPathProvider.CreateFile(s, stream => { }), VirtualPathProvider.DeleteFile,
                            s =>
            {
                var path = VirtualPathProvider.MapPath(s);
                File.WriteAllText(path, "Test");
            });
            //监控目录
            WhenPathChanges("~/c/a", VirtualPathProvider.DirectoryExists, VirtualPathProvider.CreateDirectory, VirtualPathProvider.DeleteDirectory, null);

            if (VirtualPathProvider.DirectoryExists("~/c"))
            {
                VirtualPathProvider.DeleteDirectory("~/c");
            }
        }
        private void WhenPathChanges(string path, Func <string, bool> exists, Action <string> create, Action <string> delete, Action <string> modify)
        {
            if (exists(path))
            {
                delete(path);
            }

            var token = VirtualPathMonitor.WhenPathChanges(path);
            //验证方法。
            Action <bool> val = b =>
            {
                if (b)
                {
                    Assert.IsTrue(token.IsCurrent);
                }
                else
                {
                    Assert.IsFalse(token.IsCurrent);
                }
            };

            //第一次监控始终为true
            val(true);
            val(true);

            //创建文件,文件状态变更(之前不存在)
            create(path);
            Thread.Sleep(1000);
            //监控状态应为false
            val(false);

            /*//之后的状态都为true
             * val(true);
             * val(true);*/

            if (modify != null)
            {
                //写入文件,文件状态变更(内容变更)
                modify(VirtualPathProvider.MapPath(path));
                Thread.Sleep(1000);

                /*VirtualPathProvider.OpenFile(path, stream =>
                 * {
                 *  using (var writer = new StreamWriter(stream))
                 *      writer.Write("Test");
                 * });*/
                //监控状态应为false
                val(false);

                /*//之后的状态都为true
                 * val(true);
                 * val(true);*/
            }

            //删除文件,文件状态变更(之前存在)
            delete(path);
            Thread.Sleep(1000);

            //监控状态应为false
            val(false);

            /*            //之后的状态都为true
             *          val(true);
             *          val(true);*/
        }