马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
方法一:
[C#] 查看源码 复制代码 public class CreatBrowserTask : FBroSharpTask
{
public FBroSharpRequestContext request_context = null;
public override void Execute()
{
FBroSharpWindowsInfo windows_info = new FBroSharpWindowsInfo
{
parent_window = IntPtr.Zero,
x = 0,
y = 0,
width = 1024,
height = 800,
window_name = "独立缓存"
};
//创建浏览器事件回调类
BrowserEvent browser_event = new BrowserEvent();
var browser = FBroSharpControl.CreateSync("https://www.baidu.com", windows_info, default, request_context, default/*extra_info*/, browser_event, default/*event_contrl*/);
Console.WriteLine(browser.IsValid);
}
}
private void toolStripMenuItem1_Click(object sender, EventArgs e)
{
CreatBrowserTask callback = new CreatBrowserTask();
//设置运行环境
FBroSharpRequestContextSet contextSet = new FBroSharpRequestContextSet
{
cache_folder = "syncothercache"
};
callback.request_context = (FBroSharpRequestContext)FBroSharpRequestContext.CreateContext(contextSet);
FBroSharpTaskRunner.CefPostDelayedTask(FBroSharpThreadID.TID_UI, callback, 500);
}
方法二:
[C#] 查看源码 复制代码 public class CreatBrowserTask : FBroSharpTask
{
public FBroSharpRequestContext request_context = null;
public override void Execute()
{
FBroSharpWindowsInfo windows_info = new FBroSharpWindowsInfo
{
parent_window = IntPtr.Zero,
x = 0,
y = 0,
width = 1024,
height = 800,
window_name = "独立缓存"
};
//创建浏览器事件回调类
BrowserEvent browser_event = new BrowserEvent();
var browser = FBroSharpControl.CreateSync("https://www.baidu.com", windows_info, default, request_context, default/*extra_info*/, browser_event, default/*event_contrl*/);
if (browser == null)
{
//创建失败重新创建
FBroSharpTaskRunner.CefPostTask(FBroSharpThreadID.TID_UI, this);
return;
}
Console.WriteLine(browser.IsValid);
}
}
private void toolStripMenuItem1_Click(object sender, EventArgs e)
{
CreatBrowserTask callback = new CreatBrowserTask();
//设置运行环境
FBroSharpRequestContextSet contextSet = new FBroSharpRequestContextSet
{
cache_folder = "syncothercache"
};
callback.request_context = (FBroSharpRequestContext)FBroSharpRequestContext.CreateContext(contextSet);
FBroSharpTaskRunner.CefPostTask(FBroSharpThreadID.TID_UI, callback);
}
PS:
1.方法一源码里面采用了延迟500毫秒执行创建浏览器的任务,是因为创建独立缓存目录的环境你必须提前创建,就是这个FBroSharpRequestContext.CreateContext,而5.0后内部这里已经改成异步了,你设置的时候他并没有创建成功,必须要异步等待,直接传递给浏览器,浏览器发现还没创建成功就会创建失败,返回浏览器就会是空,所以这就必须要异步等待才行;
2.其实还有个办法,就是提前创建好环境,比如初始化后,再使用同步创建浏览器直接调用已经创建好的环境也不会出问题;或者要不使用方法二,如果创建失败在重新创建一次,一般第二次环境基本创建好了,也会成功,而且基本无感
3.主要要使用同步创建浏览器才会有这个问题,使用异步创建就不会有这个问题,所以还是建议使用异步,而且异步也是最快的!
4.同理,易和火山也是如此!
|